apachespark:文件的批处理

70gysomp  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(397)

我有目录,子目录上的hdfs设置,我想预处理所有的文件,然后加载到内存中一次全部。我基本上有大文件( 1MB )一旦被处理过 1KB ,然后做 sc.wholeTextFiles 开始我的分析
如何循环每个文件( *.xml )在我的目录/子目录上,执行一个操作(假设为了示例起见,保留第一行),然后将结果转储回hdfs(例如,新文件) .xmlr ) ?

sirbozc5

sirbozc51#

我建议您只使用sc.wholetextfiles并使用转换对它们进行预处理,然后将它们全部保存回一个压缩序列文件(您可以参考我的指南:http://0x0fff.com/spark-hdfs-integration/)
另一种选择可能是编写一个mapreduce,一次处理整个文件,并将它们保存到序列文件中,就像我之前建议的那样:https://github.com/tomwhite/hadoop-book/blob/master/ch07/src/main/java/smallfilestosequencefileconverter.java. 这是《hadoop:权威指南》一书中描述的例子,请看一看
在这两种情况下,您将执行几乎相同的操作,spark和hadoop都将使用单个进程(spark任务或hadoopMap器)来处理这些文件,因此通常这两种方法都将使用相同的逻辑。我建议您从spark一开始,因为考虑到您已经有了一个带有spark的集群,实现起来更简单

相关问题