配置Spark SQL语法支持关联子查询不带聚合函数
本章节仅适用于MRS 3.3.1-LTS及之后版本。
配置场景
开源版本Spark SQL强制要求子查询关联中必须使用聚合函数,如果未使用聚合函数将报错“Error in query: Correlated scalar subqueries must be aggregated”。MRS支持配置Spark不带聚合函数的关联子查询SQL语法。
使用约束
- 支持形如“select id, (select group_name from emp2 b where a.group_id=b.group_id) as banji from emp1 a”的关联子查询SQL语法。
- 支持形如“select id, (select distinct group_name from emp2 b where a.group_id=b.group_id) as banji from emp1 a”的关联子查询SQL语法。
配置参数
- spark-sql 场景:在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数:
参数
说明
默认值
spark.sql.legacy.correlated.scalar.query.enabled
设置为true,Spark将支持不带聚合函数的关联子查询语法。
false
- spark-beeline场景,配置JDBCServer自定义参数:
如果关联子查询有多行匹配(>1), 则会执行异常。