-1
您好我是apache spark和scala的新手。我正在嘗試將 Array(('a',1), ('b',(1,1)), ('c',1))
轉換爲Array(('a',1), ('b',2), ('c',1))
減少鍵,列表(值)鍵,使用scala的值
請幫助我轉換。
您好我是apache spark和scala的新手。我正在嘗試將 Array(('a',1), ('b',(1,1)), ('c',1))
轉換爲Array(('a',1), ('b',2), ('c',1))
減少鍵,列表(值)鍵,使用scala的值
請幫助我轉換。
在缺少具體類型的問題中,我假設數組中的值分別是Char和Int元組。下面是我們如何可以改變到所需的輸出:
scala> val a = Array(('a',1), ('b',(1,1)), ('c',1))
a: Array[(Char, Any)] = Array((a,1), (b,(1,1)), (c,1))
scala> a map { case (first, second) => (first, second match { case p: Product => Tuple1(p.productIterator.map(_.asInstanceOf[Int]).reduce(_ + _)); case _=> second }) }
res27: Array[(Char, Any)] = Array((a,1), (b,(2,)), (c,1))
基本上,我們可以遍歷使用productIterator在元組中的元素。我們還需要將每個值映射到一個整數,以便計算總和。
也有看看這個問題:Iterate Over a tuple
你也許意味着'陣列((A,表(1)),(B,列表(1,1)),(C,一覽(1) ))'?如果不是,你輸入的類型應該是什麼? – Alec
並沒有什麼Spark - 所有數組(也許列表)。請更清楚。 –
'(b,(2))'是什麼意思? '(b,2)'不會更好嗎? – jwvh