2016-07-21 6 views
-1

こんにちは、私はapacheのスパークとスカラを初めて使っています。私は変換しようとしています Array(('a',1), ('b',(1,1)), ('c',1))からスカラーを使用してキー、リスト(値)をキー、値を使用して

変換で私を助けてください。

+3

あなたは多分 '配列((、一覧(1))、(B、リスト(1,1))を意味します、(C、一覧(1) )) '?そうでない場合は、あなたが入力すると思われるタイプは何ですか? – Alec

+0

そして、そこには何も火花がありません - すべての配列(と多分リスト)。どうぞよろしくお願いします。 –

+1

'(b、(2))'はどういう意味ですか? '(b、2)'の方がいいのではないでしょうか? – jwvh

答えて

2

質問に具体的な型がない場合は、配列の値がそれぞれ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を使用してタプルの要素をトラバースすることができます。合計を計算するために、各値をIntegerにマップする必要もあります。

また、この質問を見て:Iterate Over a tuple

関連する問題