Batch file apachespark:文件的批处理
我在HDFS上设置了目录和子目录,我想在将所有文件一次加载到内存之前对它们进行预处理。我基本上有大文件(Batch file apachespark:文件的批处理,batch-file,hadoop,apache-spark,hdfs,Batch File,Hadoop,Apache Spark,Hdfs,我在HDFS上设置了目录和子目录,我想在将所有文件一次加载到内存之前对它们进行预处理。我基本上有大文件(1MB),一旦处理后,这些文件将更像1KB,然后执行sc.wholeTextFiles开始我的分析 如何循环我的目录/子目录中的每个文件(*.xml),执行一个操作(为了示例起见,保留第一行),然后将结果转储回HDFS(新文件,例如.xmlr)?我建议您只使用sc.wholeTextFiles并使用转换对其进行预处理,之后,将它们全部保存回单个压缩序列文件(您可以参考我的指南:) 另一个选项可
1MB
),一旦处理后,这些文件将更像1KB
,然后执行sc.wholeTextFiles
开始我的分析
如何循环我的目录/子目录中的每个文件(
*.xml
),执行一个操作(为了示例起见,保留第一行),然后将结果转储回HDFS(新文件,例如.xmlr
)?我建议您只使用sc.wholeTextFiles并使用转换对其进行预处理,之后,将它们全部保存回单个压缩序列文件(您可以参考我的指南:)
另一个选项可能是编写一个mapreduce,一次处理整个文件,并将它们保存到序列文件中,正如我之前建议的那样:。这是《Hadoop:权威指南》一书中描述的示例,请看一看
在这两种情况下,您将执行几乎相同的操作,Spark和Hadoop都将启动单个进程(Spark task或Hadoop mapper)来处理这些文件,因此通常这两种方法都将使用相同的逻辑工作。我建议您从Spark一开始,因为考虑到您已经有了一个带有Spark的集群,实现起来更简单