
# 配置Spark SQL语法支持关联子查询不带聚合函数
#### 操作场景
开源版本Spark SQL强制要求子查询关联中必须使用聚合函数，如果未使用聚合函数将报错"Error in query: Correlated scalar subqueries must be aggregated"。MRS支持配置Spark不带聚合函数的关联子查询SQL语法。
#### 约束与限制
- 本章节仅适用于MRS 3.3.1-LTS及之后版本。
- 支持形如"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场景**：
1. 安装Spark客户端。 
   详细操作请参考[安装MRS客户端](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2127.html)。
   
   
2. 使用客户端安装用户登录Spark客户端节点。 
   在Spark客户端的"*{客户端安装目录}* /Spark/spark/conf/spark-defaults.conf"配置文件中进行设置，修改如下参数：
   
   | **参数**                                           | **说明**                                                                                                                                                                                                                                                                                | **取值示例** |
   |:---|:---|:---|
   | spark.sql.legacy.correlated.scalar.query.enabled | Spark是否支持不带聚合函数的关联子查询语法。 - true：支持不带聚合函数的关联子查询语法。  - false：不支持不带聚合函数的关联子查询语法。   | true     |
      
   
   
**spark-beeline场景：**
1. 登录FusionInsight Manager系统。 
   详细操作请参考[访问集群Manager](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2124.html)。
   
   
2. 选择"集群 \> 服务 \> Spark \> 配置 \> 全部配置 \> JDBCServer（角色） \> 自定义"，在参数"custom"中添加配置"spark.sql.legacy.correlated.scalar.query.enabled"值为"true"。 
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002098045357.png "点击放大")
   
   

3. 单击"保存"，根据界面提示保存参数。单击"实例"，勾选所有JDBCServer实例，选择"更多 \> 重启实例"，根据界面提示重启JDBCServer实例。 
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   如果关联子查询有多行匹配（\>1）, 则会执行异常。
   重启期间将无法对外提供服务，可能会影响集群的上层业务正常运行，请在业务空闲期或确认操作无影响后再执行本操作。
   
   
 
