我有一个 Spark Streaming 应用程序,它将其输出写入 HDFS。
我可以采取哪些预防措施和策略来确保此过程不会生成太多小文件并在 HDFS Namenode 中造成内存压力。 Apache Spark 是否提供任何预构建的解决方案来避免 HDFS 中出现小文件。
最佳答案
没有。 Spark不提供任何此类解决方案。
你可以做什么:
- 增加批处理间隔 - 这不能保证任何结果 - 但仍有更高的机会。尽管这里的权衡是流式传输将具有更大的延迟。
- 手动管理它。例如,在每个批处理中,您可以计算 RDD 的大小并累积 RDD,除非它们满足您的大小要求。然后你只需联合 RDD 并写入磁盘。这会意外地增加延迟,但会保证有效的空间利用。
关于apache-spark - Spark 流: avoid small files in HDFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50704286/