Apache spark 创建成对RDD
从下面的RDD中,我想创建一对RDDApache spark 创建成对RDD,apache-spark,Apache Spark,从下面的RDD中,我想创建一对RDD val line = sc.parallelize(Array("2,SMITH,AARON")) 我使用了以下代码: val pair = line.map(x => (x.split(",")(0).toInt, x)) 生成的输出是Array[(Int,String)]=Array((2,2,SMITH,AARON)) 但是我希望所需的输出是Array[(Int,String)]=Array((2,SMITH,AARON)) 请帮帮我。 我是
val line = sc.parallelize(Array("2,SMITH,AARON"))
我使用了以下代码:
val pair = line.map(x => (x.split(",")(0).toInt, x))
生成的输出是Array[(Int,String)]=Array((2,2,SMITH,AARON))
但是我希望所需的输出是Array[(Int,String)]=Array((2,SMITH,AARON))
请帮帮我。
我是个新手。剩下的就拿去吧:
val pair=line.map(x=>x.split(“,”)匹配{
大小写数组(x,xs@*)=>(x.toInt,xs.join(“,”))
})
实现这一点的简单方法是拆分并在每个位置获取阵列
line.map(r=>{
val split=r.split(“,”)
(split(0.toInt,(split.tail.mkString(“,”))
})
谢谢。这很有效。我还有一个问题要继续给定的解决方案。基本思想是创建一个键值对。如果输入RDD有多个元素,如“2,SMITH,AARON,CALIFORNIA,US,…”我的要求是键为“2”,其余为值。根据给定的代码,我应该使用split(1)、split(2)、split(3)、split(4)吗…拆分(n)或是否有其他方法?谢谢,我已根据您的上述问题更新了答案