SparkSQL使用扩展记录数据血缘和访问历史

E-MapReduce集群默认在Spark2和Spark3服务上集成了EMR-HOOK。EMR-HOOK可以收集作业的SQL信息,例如数据血缘、访问频次等。通过EMR-HOOK,您可以使用数据湖构建(DLF)的数据概况,以统计表和分区的访问次数,您也可以使用DataWorks来管理数据血缘。本文为您介绍如何配置Spark服务的EMR-HOOK。

前提条件

已创建DataLake或自定义集群,且选择了Spark服务,详情请参见创建集群

使用限制

  • EMR-HOOK不支持在通过EMR-CLI自定义部署的Gateway环境下收集作业相关的SQL信息。

  • EMR-5.16.0之前版本、EMR-3.50.0之前版本,不支持在Gateway上同步hive.exec.post.hooks(Hive)和spark.sql.queryExecutionListeners(Spark)参数;EMR-5.16.0及之后版本、EMR-3.50.0及之后版本,不仅实现了上述参数在Gateway节点上的同步,还引入了新的参数hive_aux_jars_path_gateway_only,允许您在Gateway节点上独立使用自定义扩展的JAR文件来增强功能。

注意事项

  • EMR-5.14.0之前版本、EMR-3.48.0之前版本,EMR-HOOK默认开启。

  • EMR-5.14.0及之后版本、EMR-3.48.0及之后版本,EMR-HOOK默认关闭,需要手动开启。

操作步骤

  1. 进入集群服务页面。

    1. 登录E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. 在EMR on ECS页面,单击目标集群操作列的集群服务

  2. 配置EMR-HOOK。

    1. 集群服务页面,单击Spark2或Spark3服务区域的配置

    2. 配置页面的相应页签下,可以编辑或新增如下EMR-HOOK的配置项。

      页签

      参数

      说明

      spark-defaults.conf

      spark.sql.queryExecutionListeners

      监听Spark服务执行的SQL信息,用于数据血缘和访问频次。

      • 开启EMR-HOOK时,参数值填写为com.aliyun.emr.meta.spark.listener.EMRQueryLogger

      • 关闭EMR-HOOK时,参数值置为空。

      hive-site.xml

      dlf.emrhook.webtracking

      是否开启访问频次上报。取值如下:

      • true:开启。

      • false:不开启。

      说明

      如果关闭EMR-HOOK,则数据湖构建(DLF)控制台数据表的数据概况页面将不再显示当天访问次数最近7天访问次数最近30天访问次数的数据。

    3. 保存配置。

      1. 配置页面,单击保存

      2. 在弹出的对话框中,输入执行原因,单击保存

  3. 重启Spark。

    1. 配置页面,选择更多操作> 重启

    2. 在弹出的对话框中,输入执行原因,单击确定

    3. 确认对话中,单击确定

相关文档

配置Hive服务的EMR-HOOK详情,请参见Hive使用扩展记录数据血缘和访问历史