2017-08-08 76 views
0

我有一个数据框,如下所示。它包含hdfs文件路径。我想读取这些值,然后阅读文件的内容。没有任何利用并行处理的嵌套RDD,解决这个问题的最好方法是什么?我使用Scala的2.11和2.1星火读取数据框中可用的文件路径并使用spark读取这些文件的内容

+--------------------+ 
|    value| 
+--------------------+ 
|hdfs://61.81.70.1...| 
|hdfs://61.81.70.1...| 
|hdfs://61.81.70.1...| 
|hdfs://61.81.70.1...| 
+--------------------+ 

编辑基于Ankush答案: 的文件是巨大的,无法使用wholeTextFiles

阅读谢谢

+0

将它收集到一个字符串数组中,然后用'sc.textFile'映射它。你应该有一系列的RDD – philantrovert

回答

0

你可以使用

sc.wholeTextFiles("path/to/all/file") 

doc link for reference

它生成一对RDD与key =>filepathvalue =>content of file

希望它能帮助!

+0

谢谢你的回应。我必须逐行阅读文件内容。从文档我看到整个文本方法读取整个内容作为单个记录。 Doc还说它会给大文件带来不好的性能 – Satheesh

+0

你可以使用你的数据帧的地图[link](https://stackoverflow.com/questions/37108980/how-to-read-a-file-from-hdfs-in- map-quickly-spark- –

+0

我100%同意你的观点。但从文档**小文件是首选,大文件也是允许的,但可能会导致性能不佳。** – Satheesh