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

时间:2018-06-04 16:26:17

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

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

  1. 我如何每天制作一个大文件 - 即我写到同一个主文件而不是每天写一个新文件。

  2. 我知道你可以使用coalese(1)我想但我读过这个表现不佳所以我不知道?

  3. 我想通过文件中的时间列索引此文件。我如何实现这一目标?

    df.repartition(1).write.save(mypath, format='parquet',mode='append', header='true')
    

1 个答案:

答案 0 :(得分:0)

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