Apache spark Spark数据帧以字符串中的单词为轴心

Apache spark Spark数据帧以字符串中的单词为轴心,apache-spark,apache-spark-sql,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Dataframe,基本上我有一个包含英语句子的数据框列(字符串类型)。我的目标是创建一个数据透视表(按用户ID分组),该表将单词作为列,并将其作为条目计数。问题是如果你做了类似的事情 myDataframe.groupBy(col("user")).pivot(col("sentences")).count() 如果“句子”是包含英语句子的列的名称,您将计算句子而不是单个单词。有没有办法计算句子中的单个单词,而不仅仅是句子本身?空白标记化很好。您必须先标记化并分解: import org.apache.spar

基本上我有一个包含英语句子的数据框列(字符串类型)。我的目标是创建一个数据透视表(按用户ID分组),该表将单词作为列,并将其作为条目计数。问题是如果你做了类似的事情

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

如果“句子”是包含英语句子的列的名称,您将计算句子而不是单个单词。有没有办法计算句子中的单个单词,而不仅仅是句子本身?空白标记化很好。

您必须先标记化并分解:

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()

我刚刚发现了这个
explode()
函数。也许我可以使用udf标记化列,并使用标记化创建一个新的数组列。然后分解新列以创建另一列,然后按用户分组并在分解的列上旋转。这也是我的想法:)我现在就尝试,然后接受