我有一个使用spark streaming创建的摄取管道,我想在hadoop中将rdd存储为一个大的非结构化(jsonl)数据文件,以简化将来的分析。将astream持久化到hadoop而不产生大量小文件的最佳方法是什么(因为hadoop不能很好地处理这些问题,它们会使分析工作流程复杂化)
g6baxovj1#
首先,我建议使用一个持久层,可以像cassandra那样处理这个问题。但是,如果您在hdfs上已经死机,那么邮件列表已经有了答案你可以用 FileUtil.copyMerge (来自hadoop fs)api并指定文件夹的路径 saveAsTextFiles 正在保存零件文本文件。假设您的目录是/a/b/c/use
FileUtil.copyMerge
saveAsTextFiles
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))
1条答案
按热度按时间g6baxovj1#
首先,我建议使用一个持久层,可以像cassandra那样处理这个问题。但是,如果您在hdfs上已经死机,那么邮件列表已经有了答案
你可以用
FileUtil.copyMerge
(来自hadoop fs)api并指定文件夹的路径saveAsTextFiles
正在保存零件文本文件。假设您的目录是/a/b/c/use