将Sparksql查询转换为Dataframe转换

时间:2018-08-20 17:54:13

标签: apache-spark-sql

我正在尝试使用groupby和aggregate将sparksql查询重写为数据帧转换。以下是原始的sparksql查询。

 result = spark.sql(
         "select date, Full_Subcategory, Budget_Type, SUM(measure_value) AS planned_sales_inputs FROM lookups GROUP BY date, Budget_Type, Full_Subcategory") 

下面是我正在尝试进行的Dataframe转换。

df_lookups.groupBy('Full_Subcategory','Budget_Type','date').agg(col('measure_value'),sum('measure_value')).show()

但是我不断遇到以下错误。

Py4JJavaError: An error occurred while calling o2475.agg.
: org.apache.spark.sql.AnalysisException: cannot resolve '`measure_value`' given input columns: [Full_Subcategory, Budget_Type, date];;
'Aggregate [Full_Subcategory#278, Budget_Type#279, date#413], [Full_Subcategory#278, Budget_Type#279, date#413, 'measure_value, sum('measure_value) AS sum(measure_value)#16168] 

我很确定这与按列分组以及select子句中存在的那些列有关。

请帮助。

1 个答案:

答案 0 :(得分:1)

我认为这是因为您正在col('measure_value')函数内执行agg,对我而言这没有意义,因为您没有以这种方式聚合任何值。

只需从col('measure_value')中删除agg,您将得到正确的结果。