如何使用Dataset API编写字数?

时间:2017-07-19 19:29:13

标签: java apache-spark apache-spark-sql

我需要单独使用spark数据集来编写字数统计逻辑。

我使用JavaRDD类的spark实现了相同的功能,但是我希望使用Dataset<Row>类的Spark SQL来完成相同的过程。

如何在Spark SQL中进行字数统计?

1 个答案:

答案 0 :(得分:3)

这是解决方案之一(很可能不是最有效的)。

// using col function as the OP uses Java not Scala...unfortunatelly
import org.apache.spark.sql.functions.col
val q = spark.
  read.
  text("README.md").
  filter(length(col("value")) > 0).
  withColumn("words", split(col("value"), "\\s+")).
  select(explode(col("words")) as "word").
  groupBy("word").
  count.
  orderBy(col("count").desc)
scala> q.show
+---------+-----+
|     word|count|
+---------+-----+
|      the|   24|
|       to|   17|
|    Spark|   16|
|      for|   12|
|      and|    9|
|       ##|    9|
|         |    8|
|        a|    8|
|       on|    7|
|      can|    7|
|      run|    7|
|       in|    6|
|       is|    6|
|       of|    5|
|    using|    5|
|      you|    4|
|       an|    4|
|    build|    4|
|including|    4|
|     with|    4|
+---------+-----+
only showing top 20 rows