2017-09-05 16 views
1

基本的に私は英語の文を含むデータフレーム列(String型)を持っています。私の目標は、単語を列として持ち、項目としてカウントするピボット・テーブル(ユーザーIDでグループ化)を作成することです。問題は、あなたが「文章」は、英語の文章を含む列の名前ですSpark Dataframe String in Word

myDataframe.groupBy(col("user")).pivot(col("sentences")).count() 

ような何かを行う場合、あなたは文章ではなく、個々の単語をカウントされるということです。文章だけでなく、文章中の個々の言葉を数える方法はありますか?ホワイトスペースのトークンは問題ありません。

+0

私はちょうどこの '爆発()'関数を発見しました。おそらく、udfを使って列をトークン化し、トークン化を使って新しい配列列を作成することができます。その後、新しい列を分解して別の列を作成し、次にgroupByのユーザーと展開した列をピボットします。 – user1893354

答えて

1

あなたはトークン化し、最初の爆発する必要があります。

import org.apache.spark.ml.feature.Tokenizer 

new Tokenizer() 
.setInputCol("sentences") 
.setOutputCol("tokens") 
.transform(df) 
.withColumn("token", explode($"tokens")) 
.groupBy(col("user")).pivot(col("token")).count() 
+0

これも私が思ったことです:)私は今それを試してみましょう – user1893354