2017-10-16 78 views
-1

如何在Scala中創建鍵/值數組對。我的意思是代替價值,我需要一個數組。創建鍵/值 - 數組對Scala/Spark

val newRdd1 = rdd1.flatMap(x=>x.split(" ")) 
    .map({case (key, Array(String)) => Array(String) }) 
+1

歡迎來到StackOverflow!請閱讀https://stackoverflow.com/help/asking以確保您提供了人們能夠提供幫助所需的全部信息。具體來說 - 你有什麼嘗試?你卡在哪裏?你在網上搜索了答案嗎? –

回答

-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)