我有一个包含以下内容的文本文件:
.....
电话: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
答案 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);