如何在Scala中创建键/值数组对。我的意思是代替价值我需要一个数组。
val newRdd1 = rdd1.flatMap(x=>x.split(" "))
.map({case (key, Array(String)) => Array(String) })
答案 0 :(得分:-1)
你可以使用map()来实现它,它在普通的scala程序或Scala-in-SparkContext中都是类似的。
示例,您有一个字符串列表:
var sRec = List("key1,a1,a2,a3", "key2,b1,b2,b3", "key3,c1,c2,c3")
你可以分开它和它转换为键/值(字符串数组),假设键位于第0位,使用:
sRec.map(x => (x.split(",")(0), Array(x.split(",")(1), x.split(",")(2), x.split(",")(3)))).
foreach(println)
(key1,[Ljava.lang.String;@7a81197d)
(key2,[Ljava.lang.String;@5ca881b5)
(key3,[Ljava.lang.String;@24d46ca6)
如果要按键读取特定的数组元素:
sRec.map(x => (x.split(",")(0),Array(x.split(",")(1), x.split(",")(2), x.split(",")(3)))).
map(x => (x._1, x._2(0))).foreach(println)
输出:
(key1,a1)
(key2,b1)
(key3,c1)