我正在做一个项目,涉及使用hdfs存储和apachespark计算。我在hdfs中有一个目录,其中有几个文本文件在同一深度,我想使用spark处理所有这些文件,并将它们相应的结果存储回hdfs,每个输入文件有一个输出文件。
例如,假设我有一个目录,其中有1000个相同深度的文本文件。我正在使用通配符读取所有这些文件
sc.wholeTextFiles(hdfs://localhost:9000/home/akshat/files/*.txt)
然后我使用spark处理它们,得到相应的rdd,并使用
result.saveAsTextFile("hdfs://localhost:9000/home/akshat/final")
但它给出了一个文件中所有输入文件的结果,我想得到每个文件,分别处理它们,并分别存储每个文件的输出。
我的下一个方法是什么?
提前谢谢!
1条答案
按热度按时间06odsfpq1#
您可以使用wholetextfiles()实现这一点,注意:下面的方法逐个处理文件。
哪里:
hdfs://master:port/vijay/mywordcount/--您的hdfs目录
data-org.apache.spark.rdd.rdd[(字符串,字符串)]
files-org.apache.spark.rdd.rdd[string]-文件名
dosomething(文件名)-您的逻辑
更新:多个输出文件
环境:
scala编译器2.10.2版
spark-1.2.0-bin-hadoop2.3版本
hadoop 2.3.0-cdh5.0.3版本
样本输出: