我有一个包含许多文本文件的文件夹,我必须在一个RDD中读取这些文件,并保存上面有单词的文件名
示例:
doc1.txt :
" hello my name sam "
doc2.txt :
"hello world"
我需要传递文件夹路径,结果是:
(您好,doc1),(my,doc1),(world,doc2),.....等
我试过这个:
val rddWhole = spark.sparkContext.wholeTextFiles("C:/tmp/files/*")
rddWhole.foreach(f=>{
println(f._1+"=>"+f._2)
})
但它是将文件中的整个文本作为一个字符串处理,有人知道如何解决它吗?
1条答案
按热度按时间a8jjtwal1#
根据我的假设,您希望提取文件中的每个单词,并将其与该单词包含在其中的文件名结合在一起。正如您所提到的,Spark以单个字符串的形式为您提供文件的全部内容。例如,如果这是文件内容:
您得到的值将是:
对吗?因此,您需要将字符串值拆分为任意数量的空格或换行符,如下所示:
所以在最后,你将需要这样的东西:
这将是一个结果: