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
Scala 如何在Spark中将(键、数组(值))转换为(键、值)_Scala_Apache Spark_Rdd - Fatal编程技术网

Scala 如何在Spark中将(键、数组(值))转换为(键、值)

Scala 如何在Spark中将(键、数组(值))转换为(键、值),scala,apache-spark,rdd,Scala,Apache Spark,Rdd,我有一个RDD,如下所示: val rdd1 = sc.parallelize(Array((1,Array((3,4),(4,5))),(2,Array((4,2),(4,4),(3,9))))) 这是RDD[(Int,Array[(Int,Int)]]我想通过一些操作,如flatMap或其他,得到类似RDD[(Int,(Int,Int)]的结果。在本例中,结果应该是: (1,(3,4)) (1,(4,5)) (2,(4,2)) (2,(4,4)) (2,(3,9)) 我是spark的新手

我有一个RDD,如下所示:

val rdd1 = sc.parallelize(Array((1,Array((3,4),(4,5))),(2,Array((4,2),(4,4),(3,9)))))
这是
RDD[(Int,Array[(Int,Int)]]
我想通过一些操作,如
flatMap
或其他,得到类似
RDD[(Int,(Int,Int)]
的结果。在本例中,结果应该是:

(1,(3,4))
(1,(4,5))
(2,(4,2))
(2,(4,4))
(2,(3,9))
我是spark的新手,那么我能做些什么来实现这一点呢?
非常感谢。

假设RDD为
rd
。使用下面的代码获取所需的数据

rdd1.flatMap(x=>x.\u2.map(y=>(x.\u1,y)))


flatmap
中的Internal
map
方法读取
x._2
是数组,一次读取数组的每个值为
y
。之后,平面图将把它们作为单独的项提供。
x._1
是RDD中的第一个值。

假设RDD为
rd
。使用下面的代码获取所需的数据

rdd1.flatMap(x=>x.\u2.map(y=>(x.\u1,y)))


flatmap
中的Internal
map
方法读取
x._2
是数组,一次读取数组的每个值为
y
。之后,平面图将作为单独的项提供它们。
x._1
是RDD中的第一个值。

在您的情况下,可以使用flatmap,如下所示:

val newRDD: RDD[(Int, (Int, Int))] = rdd1
.flatMap { case (k, values) => values.map(v => (k, v))}

您可以在您的案例中使用flatMap,如下所示:

val newRDD: RDD[(Int, (Int, Int))] = rdd1
.flatMap { case (k, values) => values.map(v => (k, v))}