【发布时间】:2015-07-06 10:13:48
【问题描述】:
我有一个使用 Spark Streaming 创建的摄取管道,我想将 RDD 作为大型非结构化 (JSONL) 数据文件存储在 hadoop 中,以简化未来的分析。
在不产生大量小文件的情况下将 astream 持久化到 hadoop 的最佳方法是什么? (因为 hadoop 不擅长这些,而且它们使分析工作流程复杂化)
【问题讨论】:
标签: hadoop apache-spark hdfs spark-streaming
我有一个使用 Spark Streaming 创建的摄取管道,我想将 RDD 作为大型非结构化 (JSONL) 数据文件存储在 hadoop 中,以简化未来的分析。
在不产生大量小文件的情况下将 astream 持久化到 hadoop 的最佳方法是什么? (因为 hadoop 不擅长这些,而且它们使分析工作流程复杂化)
【问题讨论】:
标签: hadoop apache-spark hdfs spark-streaming
首先,我建议使用可以像 Cassandra 一样处理此问题的持久层。但是,如果你对 HDFS 很执着,那么the mailing list has an answer already
您可以使用FileUtil.copyMerge(来自hadoop fs)API 并指定saveAsTextFiles 保存零件文本文件的文件夹的路径。
假设你的目录是 /a/b/c/ 使用
FileUtil.copyMerge(FileSystem of source, a/b/c,
FileSystem of destination, Path to the merged file say (a/b/c.txt),
true(to delete the original dir,null))
【讨论】: