我需要单独使用spark数据集来编写字数统计逻辑。
我使用JavaRDD
类的spark实现了相同的功能,但是我希望使用Dataset<Row>
类的Spark SQL来完成相同的过程。
如何在Spark SQL中进行字数统计?
答案 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