2016-12-09 2 views
0

数字のリストを含む列のデータセットがあります。データセットフラットマップgroupByパラメータタイプがありません

これらのリストのすべての単一番号の出現を数えたいと思います。だから私はすべての整数のセットを得るためにflatMapを行います。私はそれをグループ化して、それぞれの番号を1回だけ持っていき、その後、(2番目の列などで)発生数を追加します。 これまでの私のコード:

val counts = dataset.flatMap(_.intLists).groupBy(i => identity(i)).count 

しかし、それは常に「i」は、パラメータの型が欠落していることを、述べています。私はそれがIntであることを伝える必要があると思いますが、どうすればいいですか?それとも全く違うものを紛失していますか?

+0

'.groupBy(identity)'を実行するだけです。 – marstran

+0

これを行うと、オブジェクトのメソッドIDの引数リストが欠落しています。Predef適用されていないメソッドは、関数型が必要な場合にのみ関数に変換されます。アイデンティティの代わりにアイデンティティ_またはアイデンティティ(_)を書くことで、この変換を明示的にすることができます。 –

+0

奇妙な。私のためにうまく動作します。 'dataset'はどのような型ですか?とにかく '(i:Int)=> identity(i)' – marstran

答えて

3

クラスパスでSpark 2.0.2の依存関係を使ってコードをテストすると、メソッドではStringまたはColumnのいずれかが必要であることがわかります。

グループ化キー(例:identity)を抽出する関数を使用するgroupByKeyメソッドを使用できます。

val counts = dataset.flatMap(_.intLists).groupByKey(identity).count 
+1

を書いて、 'i'の型を指定することができます。それは非常に簡単でした:-)私はそれをgroupBy( "value")とgroupByKey(identity)の両方で動作させました。 –

関連する問題