文档

通过DataWorks使用Spark Distribution SQL Engine

更新时间:

若您需要在DataWorks中开发Spark SQL作业,可以通过注册CDH集群的方式,将的Spark Distribution SQL Engine服务注册为一种支持SQL的执行引擎,从而满足您在DataWorks中使用Spark Distribution SQL Engine开发Spark SQL作业的业务需求。

前提条件

  • AnalyticDB for MySQL集群的产品系列为企业版或湖仓版

  • 已在AnalyticDB for MySQL集群中创建Job型资源组。具体操作,请参见新建资源组

  • 已创建AnalyticDB for MySQL集群的数据库账号。

  • 已创建DataWorks工作空间。具体操作,请参见创建工作空间

  • 已购买DataWorks独享调度资源组。

    DataWorks独享调度资源组购买后,默认与其他云产品网络不连通。在对接使用CDH时,需先保障CDH集群和独享调度资源组间网络连通,才可进行后续相关操作。购买资源组,详情请参见新增和使用独享调度资源组

背景信息

DataWorks提供了与CDH(Cloudera’s Distribution Including Apache Hadoop,以下简称CDH)集群对接的能力,您可在DataWorks中注册CDH集群,进行任务开发、调度、数据地图(元数据管理)和数据质量等一系列的数据开发和治理操作。Spark Distribution SQL Engine是Spark内置的分布式SQL执行引擎,您可以在DataWorks中以注册CDH集群的方式,将Spark Distribution SQL Engine注册为支持SQL的一种执行引擎,从而能够在DataWorks中通过Spark Distribution SQL Engine来执行SQL。

AnalyticDB for MySQL集群支持启动多个Spark Distribution SQL Engine,因此您也可以根据自己需求启动不同配置的Spark Distribution SQL Engine并托管到DataWorks,以满足不同的业务需求。

操作步骤

步骤一:启动Spark Distribution SQL Engine

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版湖仓版页签下,单击目标集群ID。

  2. 在左侧导航栏,单击作业开发 > Spark Jar开发

  3. 在编辑器窗口上方,选择Job型资源组,作业类型选择SQLEngine

  4. 在编辑器中输入以下作业内容。

    重要

    DataWorks不支持携带用户名和密码的Spark Distribution SQL Engine,因此在启动Spark Distribution SQL Engine时请勿配置spark.kubernetes.driverEnv.HIVE_SERVER2_USERspark.kubernetes.driverEnv.HIVE_SERVER2_PASSWORD参数。

    -- Here is just an example of start Spark SQLEngine. Modify the content and run your spark program.
    CONF spark.driver.resourceSpec=medium;
    CONF spark.executor.instances=1;
    CONF spark.executor.resourceSpec=small;
    CONF spark.app.name=Spark SQLEngine;
    CONF spark.sql.hive.metastore.version=adb;
    CONF spark.adb.sessionTTLSeconds=2147483647;

    参数说明:

    参数

    是否必填

    说明

    spark.app.name

    Spark应用名称。

    spark.sql.hive.metastore.version

    指定采用元数据服务版本,支持如下配置:

    • adb:连接AnalyticDB for MySQL中的元数据信息。

    • <hive_version>:指定Hive MetaStore的版本。

    说明

    spark.adb.sessionTTLSeconds

    Spark Distribution SQL Engine销毁时间。单位为秒(s),默认值为1200秒。即最后一个SQL代码块执行完毕,1200秒后Spark Distribution SQL Engine服务会自动销毁。

    重要
    • Spark Distribution SQL Engine销毁后,重启Spark Distribution SQL Engine时,会重新生成一个新的连接地址。

    • 如果您需要在DataWorks中长期使用Hive时,请将spark.adb.sessionTTLSeconds参数配置为2147483647,避免Spark Distribution SQL Engine长时间没有执行SQL而自动销毁。

    其他参数,请参见Spark应用配置参数说明

步骤二:获取域名连接地址

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版湖仓版页签下,单击目标集群ID。

  2. 在左侧导航栏,单击作业开发 > Spark Jar开发

  3. 应用列表页签中,单击目标Spark应用操作列的详情,获取Spark Distribution SQL Engine的域名地址,即Spark JDBC Public Connect URL对应的地址。

步骤二:在DataWorks中注册Spark Distribution SQL Engine

  1. 进入管理中心页面。

    登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的管理中心,在下拉框中选择对应工作空间后单击进入管理中心

  2. 在左侧导航栏单击开源集群 > 注册集群,选择CDH,进入集群注册页面。

  3. 注册CDH集群页面,配置如下参数:

    配置参数

    说明

    集群显示名称

    定义集群在DataWorks的名称,名称必须唯一。

    集群版本

    选择注册的集群版本。

    请选择CDH 6.3.2

    集群名称

    用于确定当前所注册集群的配置信息来源。可选择其他工作空间已注册的集群或新建集群:

    • 已注册集群:当前所注册集群的配置信息,直接引用其他工作空间已注册集群的配置信息。

    • 新建集群:当前注册集群的配置信息需您自行配置。

    版本选择

    Hive的版本号。请选择2.1.1

    HiveServer2

    HiveServer2地址。请填写步骤二中启动Spark Distribution SQL Engine后获取的域名连接地址。详情请参见步骤二:获取域名连接地址

    重要

    域名地址中的{database name}需替换为实际的数据库名。

    Metastore

    Hive Metastore地址。请填写步骤二中启动Spark Distribution SQL Engine后获取的域名连接地址。详情请参见步骤二:获取域名连接地址

    重要

    域名地址中的{database name}需替换为实际的数据库名。

    默认访问方式

    用于配置在DataWorks运行CDH集群任务时,使用什么账号访问CDH集群。详情请参见配置集群默认访问身份

  4. 单击完成注册

步骤三:在DataWorks中使用Spark Distribution SQL Engine执行SQL

  1. 进入数据开发页面。

    登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据建模与开发 > 数据开发,在下拉框中选择对应工作空间后单击进入数据开发

  2. 创建业务流程。

    您可使用如下两种方式创建:

    • 方式一:鼠标悬停至新建图标,单击新建业务流程

    • 方式二:右键单击数据开发左侧目录树的业务流程,选择新建业务流程

  3. 在弹出的新建业务流程对话框中,配置业务流程的名称及描述,单击新建

    本文示例创建名为Sparktest的业务流程。

  4. 创建节点。

    1. 展开业务流程Sparktest的子目录,并单击CDH

    2. 右键单击数据开发,选择新建节点 > CDH Hive

    3. 配置节点引擎实例、名称等信息。

    4. 单击确认

  5. 节点创建完成后,在右侧代码框中输入SQL语句,单击image按钮执行。

    SHOW TABLES;

    返回结果:

    +-----------+-----------+-------------+
    | namespace | tableName | isTemporary |
    +-----------+-----------+-------------+
    |    db     |   test    |    false    |
    +-----------+-----------+-------------+