apache-spark - Hadoop Spark-存储在一个大文件中,而不是存储许多小文件和索引

标签 apache-spark hadoop pyspark apache-spark-sql hadoop-partitioning

每天我都会计算一些统计信息并将其存储在文件中(约40行数据)。以下df是每天计算的。问题是当我每天将其存储为一个新文件时,我不想这样做,因为hadoop无法很好地处理多个小文件。我也不能覆盖该文件,因为我也需要历史数据。

  • 如何每天制作一个大文件-即我写入同一主文件,而不是每天写入一个新文件。
  • 我知道您可以使用Coalese(1),我想是我读过的,但是性能不佳,所以我不知道吗?
  • 我想通过文件中的时间列为该文件建立索引。我该如何实现?
    df.repartition(1).write.save(mypath, format='parquet',mode='append', header='true')
    
  • 最佳答案

    您可以每天通过此操作覆盖相同的旧文件。
    DF.write.mode(SaveMode.Overwrite)

    关于apache-spark - Hadoop Spark-存储在一个大文件中,而不是存储许多小文件和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50684971/

    相关文章:

    java - 将流数据插入hive

    hadoop - 在 sparksql 中设置 textinputformat.record.delimiter

    python - Apache Spark 查询仅针对 "dd/mm/yyyy"格式的 YEAR

    apache-spark - 使用 Yarn-cluster 在 Oozie 中运行 Spark 作业

    hadoop - Hive 查询中的分配

    xml - 改变 mapred.reduce.tasks

    apache-spark - 列在 pySpark 中不可迭代

    pyspark - 手动创建pyspark数据框

    pyspark - 如何在不阅读内容的情况下获取 Delta 表的架构?

    scala - 分组后将Spark DataFrame的行聚合为String