【发布时间】:2020-01-14 18:14:15
【问题描述】:
我是 scala 和 spark 的新手,需要以下帮助。
我有三个文件作为地址、邮政编码和大陆,我已经将它们作为 RDD 读取,现在我需要使用 scala 和 spark 找出地址行中具有“stratra”的大陆的数量。
例如:
address postalcode continent
stratra 110011 110011 india india asia
knagar 660011 660011 usa usa usa
stratra 110012 110012 uk uk europe
manhatten 669923 669923 usa usa usa
stratra 220022 220022 srilanka srilanka asia
所以结果应该是:
((stratra,asia),2)
((stratra,europe),1)
或者如果你能提供更好的选择。
//define three case class in scala:
case class address(line:String,postalcode:Int)
case class postalcode(postalcode:Int,country:String)
case class continent(country:String,continent:String)
val address=sc.tetFile("hdfs://test/address.txt")
val postalcode=sc.tetFile("hdfs://test/postalcode.txt")
val continent=sc.tetFile("hdfs://test/comtinent.txt")
val addressRdd=address.map(x=>x.split(" ")).filetr(v=>v(0)=="stratra").map(line=>Address(line(0),line(1).toInt))
val postRdd=postalcode.map(x=>x.split("")).map(line=>postalcode(line(0).toInt,linr(1))))
val continent=continent.map(x=>x.split("")).map(line=>continent(line(0),linr(1))))
//now I try to join address and postalcode with postalcode
val addresskey=addressRdd.map(line=>(line.postalcode,line))
val postalkey=postalRdd.map(line=>(line.postalcode,line))
val joinaddpostal=addresskey.join(postalkey)
但我没有得到想要的结果来进一步处理
如何做到这一点?提前谢谢
【问题讨论】:
标签: scala apache-spark rdd