Spark scala数据框查找最大值

时间:2016-05-20 08:25:40

标签: scala apache-spark dataframe

我正在使用以下内容来查找最大列值。

  val d = sqlContext.sql("select max(date), id from myTable group By id")

如何在不注册临时表的情况下对DataFrame执行相同的查询。

感谢,

5 个答案:

答案 0 :(得分:0)

如果您想将该sql转换为与数据帧一起使用的代码,您可以执行以下操作:

df.groupBy("id").max("date").show()

答案 1 :(得分:0)

如果你有一个带有id和date列的数据框,你可以做什么n spark 2.0.1

from pyspark.sql.functions import max
 mydf.groupBy('date').agg({'id':'max'}).show()

答案 2 :(得分:0)

直接转换为DataFrame Scala API:

df.groupBy("id").agg(max("date"))
对于OP的SQL& S,Spark 2.2.0执行计划是相同的。 DF场景。

spark-shell的完整代码:

Seq((1, "2011-1-1"), (2, "2011-1-2")).toDF("id", "date_str").withColumn("date", $"date_str".cast("date")).write.parquet("tmp")
var df = spark.read.parquet("tmp")
df.groupBy("id").agg(max("date")).explain

df.createTempView("myTable")
spark.sql("select max(date), id from myTable group By id").explain

答案 3 :(得分:-1)

最大限度地使用

df.describe(Columnname).filter("summary = 'max'").collect()[0].get(1))

最少使用

df.describe(Columnname).filter("summary = 'min'").collect()[0].get(1))

答案 4 :(得分:-2)

var maxValue = myTable.select("date").rdd.max()