-1
こんにちは、私はapacheのスパークとスカラを初めて使っています。私は変換しようとしています Array(('a',1), ('b',(1,1)), ('c',1))
からスカラーを使用してキー、リスト(値)をキー、値を使用して
変換で私を助けてください。
こんにちは、私はapacheのスパークとスカラを初めて使っています。私は変換しようとしています Array(('a',1), ('b',(1,1)), ('c',1))
からスカラーを使用してキー、リスト(値)をキー、値を使用して
変換で私を助けてください。
質問に具体的な型がない場合は、配列の値がそれぞれ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
あなたは多分 '配列((、一覧(1))、(B、リスト(1,1))を意味します、(C、一覧(1) )) '?そうでない場合は、あなたが入力すると思われるタイプは何ですか? – Alec
そして、そこには何も火花がありません - すべての配列(と多分リスト)。どうぞよろしくお願いします。 –
'(b、(2))'はどういう意味ですか? '(b、2)'の方がいいのではないでしょうか? – jwvh