您可以通过创建EMR(E-MapReduce) Spark SQL节点,实现分布式SQL查询引擎处理结构化数据,提高作业的执行效率。
前提条件
- 您已创建阿里云EMR集群,且集群所在的安全组中入方向的安全策略包含以下策略。
- 授权策略:允许
- 协议类型:自定义 TCP
- 端口范围:8898/8898
- 授权对象:100.104.0.0/16
- 您在工作空间配置页面添加E-MapReduce计算引擎实例后,当前页面才会显示EMR目录。详情请参见配置工作空间。
- 如果EMR启用了Ranger,则使用DataWorks进行EMR的作业开发前,您需要在EMR中修改配置,添加白名单配置并重启Hive,否则作业运行时会报错Cannot modify spark.yarn.queue at runtime或Cannot modify SKYNET_BIZDATE at runtime。
- 白名单的配置通过EMR的自定义参数,添加Key和Value进行配置,以Hive组件的配置为例,配置值如下。
hive.security.authorization.sqlstd.confwhitelist.append=tez.*|spark.*|mapred.*|mapreduce.*|ALISA.*|SKYNET.*
说明 其中ALISA.*
和SKYNET.*
为DataWorks专有的配置。
- 白名单配置完成后需要重启服务,重启后配置才会生效。重启服务的操作详情请参见重启服务。
- 已开通独享调度资源组,并且独享调度资源组需要绑定EMR所在的VPC专有网络,详情请参见新增和使用独享调度资源组。
操作步骤
- 进入数据开发页面。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的进入数据开发。
- 鼠标悬停至
图标,单击。您也可以找到相应的业务流程,右键单击EMR,选择。
- 在新建节点对话框中,输入节点名称,并选择目标文件夹。
说明 节点名称必须是大小写字母、中文、数字、下划线(_)和小数点(.),且不能超过128个字符。
- 单击提交。
- 在节点编辑页面,输入代码。
SQL语句示例如下。
show tables;
CREATE TABLE IF NOT EXISTS userinfo_new_${var} (
ip STRING COMMENT'ip地址',
uid STRING COMMENT'用户ID'
)PARTITIONED BY(
dt STRING
); //可以结合调度参数使用。
说明
- SQL语句最大不能超过130KB。
- 使用EMR Spark SQL节点查询数据时,返回的查询结果最大支持10000条数据,并且数据总量不能超过10M。
- 如果您的工作空间绑定多个EMR引擎,则需要根据业务需求选择合适的引擎。如果仅绑定一个EMR引擎,则无需选择。
调度参数使用详情可参考
配置调度参数。
如果您需要修改代码中的参数赋值,请单击界面上方工具栏的高级运行。参数赋值逻辑详情请参见运行,高级运行和开发环境冒烟测试赋值逻辑有什么区别。

Spark SQL相关文档请参考
Spark SQL作业配置。
- 编辑高级配置。
- "SPARK_CONF": "--conf spark.driver.memory=2g --conf xxx=xxx" ,设置spark 任务运行参数,多个参数在该key中追加。
- “queue”:提交作业的调度队列,默认为default队列。
- “vcores”: 虚拟核数,默认为1。
- “memory”:内存,默认为2048MB(用于设置启动器Launcher的内存配额)。
- “priority”:优先级,默认为1。
- “FLOW_SKIP_SQL_ANALYZE”:SQL语句执行方式,参数值为false表示每次执行一条SQL语句;参数值为true表示每次执行多条SQL语句。
- “USE_GATEWAY”:设置本节点提交作业时,是否通过Gateway集群提交,true标明通过Gateway集群提交,false表明不通过Gateway集群提交,默认提交到header节点。
说明 如果本节点所在的集群未关联Gateway集群,此处手动设置参数取值为true时,后续提交EMR作业时会失败。
- 在调度配置界面对节点配置调度相关参数。
- 保存并提交节点。
注意 您需要设置节点的重跑属性和依赖的上游节点,才可以提交节点。
- 单击工具栏中的
图标,保存节点。
- 单击工具栏中的
图标。
- 在提交新版本对话框中,输入变更描述。
- 单击确认。
如果您使用的是标准模式的工作空间,提交成功后,请单击右上方的
发布。具体操作请参见
发布任务。
- 测试节点,详情请参见查看周期任务。