如何使用文本文件中的换行符抓取文字?

时间:2018-01-24 04:35:47

标签: scala apache-spark rdd

我有一个包含以下内容的文本文件:

  

.....

     

电话:123-456-7899,555-555-5555,999-333-7890

     

姓名:Bob Jones,Mary Smith,Bob McAlly,

     

Sally Fields,Tom Hanks,Jeffery Cook,

     贝蒂怀特,汤姆麦克唐纳,布鲁斯哈里斯

     

地址:1234 Main,445 Westlake,3332 Front Street
   .....

我希望抓住所有从Bob Jones开始的名字,并从文件中结束Bruce Harris。我有这个Scala代码,但它只获得第一行:

  

Bob Jones,Mary Smith,Bob McAlly,

以下是代码:

val addressBookRDD = sc.textFile(file);
val myRDD = addressBookRDD.filter(line => line.contains("Names: ")

我不知道如何处理文本文件中的返回或换行符,因此代码只抓取名称的第一行,而不是其他名称的单独行。我正在寻找这种类型的结果:

  Bob Jones,Mary Smith,Bob McAlley,Sally Fields,Tom Hanks,Jeffery   Cook,Betty White,Tom McDonald,Bruce Harris

1 个答案:

答案 0 :(得分:2)

正如我在评论中指出的那样,以这种方式读取文件并不是Spark非常适合的。如果文件不是很大,仅使用Scala可能是更好的方法。这是一个Scala实现:

names foreach println

使用Bob Jones Mary Smith Bob McAlly Sally Fields Tom Hanks Jeffery Cook Betty White Tom McDonald Bruce Harris 打印名称将为您提供:

self.myContractInstance = self.MyContract.at(self.address);