【发布时间】:2018-06-04 16:26:16
【问题描述】:
我每天都会计算一些统计数据并将其存储在一个文件中(大约 40 行数据)。下面的df是每天计算的。问题是当我每天存储它时它会变成一个新文件,我不想这样做,因为 hadoop 不能很好地处理多个小文件。我无法覆盖该文件,因为我也需要历史数据。
我如何每天制作一个大文件 - 即我写入同一个主文件而不是每天写入一个新文件。
我知道你可以使用 coalese(1) 我认为但我读到这是性能很差所以我不知道?
-
我想通过文件中的时间列来索引这个文件。我如何实现这一目标?
df.repartition(1).write.save(mypath, format='parquet',mode='append', header='true')
【问题讨论】:
-
40 行数据仍然很小。您确定需要 Hadoop 来存储它吗?
-
可能不会。但是我在 hadoop 中有其余的数据,所以我仍然没有弄清楚如何将它们保存在不同的位置并且仍然可以轻松地在同一个问题中使用。如果您有任何参考架构,我会很乐意阅读 :) 问题是我以微秒、秒和 1 小时存储统计信息。一小时文件非常小,但是微秒文件很大,所以可能需要 hadoop。所以我想将它保存在同一个文件系统中,而不为此使用另一个数据库。因此问题
标签: apache-spark hadoop pyspark apache-spark-sql hadoop-partitioning