apache-spark-sql - 将 Sparksql 查询转换为 Dataframe 转换
问题描述
我正在尝试使用 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 子句中存在的那些列有关。
请帮助。
解决方案
我认为这是因为你在做col('measure_value')
内部agg
函数,这对我来说没有意义,因为你没有以这种方式聚合任何价值。
只需从中删除col('measure_value')
,agg
您将获得正确的结果。
推荐阅读
- adonis.js - 不能同时使用连接 URL 和选项对象
- azure - Azure 路易斯迁移问题
- go - go - 如何在go golang中的特定内存地址声明一个指针并在那里存储一个值
- javascript - 如何在不使用 DOM 函数的情况下将 Uint8ClampedArray 转换为图像?
- django - Django嵌套if语句给了我一个奇怪的错误
- java - 如何在单个语句中运行多个查询
- ng-bootstrap - 从 ngbDropdownToggle 中删除小箭头
- javascript - 将报价添加到没有报价的 json 文件
- java - 独立罐空手道问题
- python - 无法确定为什么 MNE raw.plot 返回“ValueError:bottom cannot be >= top”