若您需要在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集群的数据库账号。
如果是通过阿里云账号访问,只需创建高权限账号。具体操作,请参见创建高权限账号。
如果是通过RAM用户访问,需要创建高权限账号和普通账号并且将RAM用户绑定到普通账号上。具体操作,请参见创建数据库账号和绑定或解绑RAM用户与数据库账号。
已创建DataWorks工作空间。具体操作,请参见创建工作空间。
已购买DataWorks新版通用型资源组(推荐)或旧版独享调度资源组。
DataWorks资源组购买后,默认与其他云产品网络不连通。在对接使用CDH时,需先保障CDH集群和资源组间网络连通,才可进行后续相关操作。
说明(推荐)新版资源组为通用型资源组,可满足多种任务类型(例如,数据同步、任务调度)的场景应用,购买详情请参见新增和使用Serverless资源组。新用户(即在当前地域未开通过任意版本DataWorks的用户)仅支持购买新版资源组。
若您已购买过旧版独享调度资源组,也可使用该资源组运行CDH或CDP任务。详情请参见使用独享调度资源组。
背景信息
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
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击
。在编辑器窗口上方,选择Job型资源组,作业类型选择SQLEngine。
在编辑器中输入以下作业内容。
重要DataWorks不支持携带用户名和密码的Spark Distribution SQL Engine,因此在启动Spark Distribution SQL Engine时请勿配置
spark.kubernetes.driverEnv.HIVE_SERVER2_USER
和spark.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支持的Hive版本,请参见Spark Configuration。
如需要连接自建的Hive Metastore,可以采用社区Spark的标准配置方式。请参见Spark Configuration。
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应用配置参数说明。
步骤二:获取域名连接地址
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击
。在应用列表页签中,单击目标Spark应用操作列的详情,获取Spark Distribution SQL Engine的域名地址,即
Spark JDBC Public Connect URL
对应的地址。
步骤二:在DataWorks中注册Spark Distribution SQL Engine
进入管理中心页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的管理中心,在下拉框中选择对应工作空间后单击进入管理中心。
在左侧导航栏单击,选择CDH,进入集群注册页面。
在注册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集群。详情请参见配置集群默认访问身份。
单击完成注册。
步骤三:在DataWorks中使用Spark Distribution SQL Engine执行SQL
进入数据开发页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据开发。
创建业务流程。
您可使用如下两种方式创建:
方式一:鼠标悬停至图标,单击新建业务流程。
方式二:右键单击数据开发左侧目录树的业务流程,选择新建业务流程。
在弹出的新建业务流程对话框中,配置业务流程的名称及描述,单击新建。
本文示例创建名为
Sparktest
的业务流程。创建节点。
展开业务流程
Sparktest
的子目录,并单击CDH。右键单击数据开发,选择 。
配置节点引擎实例、名称等信息。
单击确认。
节点创建完成后,在右侧代码框中输入SQL语句,单击按钮执行。
SHOW TABLES;
返回结果:
+-----------+-----------+-------------+ | namespace | tableName | isTemporary | +-----------+-----------+-------------+ | db | test | false | +-----------+-----------+-------------+