Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 创建成对RDD_Apache Spark - Fatal编程技术网

Apache spark 创建成对RDD

Apache 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)) 请帮帮我。 我是

从下面的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 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)或是否有其他方法?谢谢,我已根据您的上述问题更新了答案