小编use*_*671的帖子

dataframe:如何groupBy/count然后过滤Scala中的count

Spark 1.4.1

我遇到一种情况,按数据框进行分组,然后对'count'列进行计数和过滤会引发下面的异常

import sqlContext.implicits._
import org.apache.spark.sql._

case class Paf(x:Int)
val myData = Seq(Paf(2), Paf(1), Paf(2))
val df = sc.parallelize(myData, 2).toDF()
Run Code Online (Sandbox Code Playgroud)

然后分组和过滤:

df.groupBy("x").count()
  .filter("count >= 2")
  .show()
Run Code Online (Sandbox Code Playgroud)

引发异常:

java.lang.RuntimeException: [1.7] failure: ``('' expected but `>=' found count >= 2
Run Code Online (Sandbox Code Playgroud)

解:

重命名列会使问题消失(因为我怀疑与插值'count'函数没有冲突'

df.groupBy("x").count()
  .withColumnRenamed("count", "n")
  .filter("n >= 2")
  .show()
Run Code Online (Sandbox Code Playgroud)

那么,这是一种期望的行为,一个错误还是一种规范的方式?

谢谢,亚历克斯

scala apache-spark apache-spark-sql

35
推荐指数
3
解决办法
9万
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

scala ×1