我正在使用以下内容来查找最大列值。
val d = sqlContext.sql("select max(date), id from myTable group By id")
如何在不注册临时表的情况下对DataFrame执行相同的查询。
感谢,
答案 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()