• 沒有找到結果。

DLI Spark-submit 简介

DLI Spark-submit是一个用于提交Spark作业到DLI服务端的命令行工具,该工具提供 与开源Spark兼容的命令行。

准备工作

在使用DLI Spark-submit前,需要进行如下操作:

1. 授权。

DLI使用统一身份认证服务(Identity and Access Management,简称IAM)进行 精细的企业级多租户管理。该服务提供用户身份认证、权限分配、访问控制等功 能,可以帮助您安全地控制华为云资源的访问。

通过IAM,您可以在华为云账号中给员工创建IAM用户,并使用策略来控制他们对 华为云资源的访问范围。

目前包括角色(粗粒度授权)和策略(细粒度授权)。具体的权限介绍和授权操 作请参考《数据湖探索用户指南》。

2. 创建队列。在“队列类型”中选择“通用队列”,即Spark作业的计算资源。

DLI管理控制台中,创建队列的操作入口有三个,分别在“总览”页面、“SQL编 辑器”页面和“队列管理”页面。

– 单击总览页面右上角 进行创建队列。

– 在“队列管理”页面创建队列。

i. 在DLI管理控制台的左侧导航栏中,选择“队列管理”。

ii. 在“队列管理”页面右上角 进行创建队列。

– 在“SQL编辑器”页面创建队列。

i. 在DLI管理控制台的顶部菜单栏中,选择“SQL编辑器”。

ii. 在左侧导航栏的 页签,单击“队列”右侧的 创建队列。

说明

如果创建队列的用户不是管理员用户,在创建队列后,需要管理员用户赋权后才可使用。

关于赋权的具体操作请参考《数据湖探索用户指南》。

DLI 客户端工具下载

您可以在DLI管理控制台下载DLI客户端工具。

步骤1 登录DLI管理控制台。

步骤2 单击总览页右侧“常用链接”中的“SDK下载”。

步骤3 在“DLI SDK DOWNLOAD”页面,单击“huaweicloud-dli-clientkit-<version>”即 可下载DLI客户端工具。

说明

DLI客户端空间命名为“huaweicloud-dli-clientkit-<version>-bin.tar.gz”,支持在Linux环境中 使用,且依赖JDK 1.8及以上版本。

----结束

配置 DLI Spark-submit

使用spark-submit的机器安装JDK 1.8或以上版本并配置环境变量,推荐在Linux环境下 使用spark-submit工具。

步骤1 下载并解压工具包“huaweicloud-dli-clientkit-<version>-bin.tar.gz”,其中version为 版本号,以实际版本号为准。

步骤2 进入解压目录,里面有三个子目录bin、conf、lib,分别存放了Spark-submit相关的执 行脚本、配置文件和依赖包。

步骤3 进入配置文件conf目录,修改“client.properties”中的配置项,(具体配置项参考表 2-17)。

2-17 DLI 客户端工具配置参数

属性项 必须配

默认值 描述

dliEndPon

t 否 - DLI服务的域名。在地区和终端节点获取

DLI对应区域的域名。

如果不配置,程序根据region参数来确定 华为云对应区域的域名。

obsEndPo

int 是

obs.cn-north-1.myhua weicloud.com

OBS服务的域名。在地区和终端节点获取 OBS对应区域的域名。

属性项 必须配 置

默认值 描述

bucketNa

me 是 - OBS上的桶名称。该桶用于存放Spark程

序中使用的jar包、Python程序文件、配置 文件等。

obsPath 是 dli-spark- submit-resources

OBS上存放jar包、Python程序文件、配置 文件等的目录,改目录在bucketName指 定的桶下。如果该目录不存在,程序会自 动创建。

localFileP

ath 是 - 存放Spark程序中使用的jar包、Python程 序文件、配置文件等的本地目录。

程序会自动将Spark程序依赖到的相关文 件上传的OBS路径,并加载到DLI服务端 资源包。

ak 是 - 用户的Access Key。

sk 是 - 用户的Secret Key。

projectId 是 - 用户访问的DLI服务使用的项目编号。

region 是 - 对接的DLI服务的Region,例如:cn-north-1。

根据Spark应用程序的需要,修改“spark-defaults.conf”中的配置项,配置项兼容开 源Spark配置项,参考开源Spark的配置项说明。

----结束

使用 Spark-submit 提交 Spark 作业

步骤1 进入工具文件bin目录,执行spark-submit命令,并携带相关参数。

命令执行格式:

spark-submit [options] <app jar | python file> [app arguments]

2-18 DLI Spark-submit 参数列表

参数名称 参数值 描述

--class <CLASS_NAME

> 提交的Java/Scala应用程序的主类名称。

--conf <PROP=VALUE

> Spark程序的参数,可以通过在conf目录下的 spark-defaults.conf中配置。如果命令中与配置文 件中同时配置,优先使用命令指定的参数值。

说明多个conf时,格式为:--conf key1=value1 --conf key2=value2

参数名称 参数值 描述

--jars <JARS> Spark应用依赖的jar包名称,存在多个时使用","分 割。jar包文件需要提前保存在client.properties文 件中localFilePath配置的本地路径中。

--name <NAME> Spark应用的名称。

--queue <QUEUE_NAM

E> DLI服务端Spark队列名称,作业会提交到该队列 中执行。

--py-files <PY_FILES> Spark应用依赖的Python程序文件名称,存在多个 时使用","分割。Python程序文件文件需要提前保 存在client.properties文件中localFilePath配置的 本地路面中。

-s,--skip- upload-resources

<all | app |

deps> 是否跳过,将jar包、Python程序文件、配置文件 上传到OBS和加载到DLI服务端资源列表。当相关 资源文件已经加载到DLI服务资源列表中,可以使 用该参数跳过该步骤。

不携带该参数时,默认会上传和加载命令中的所 有资源文件到DLI服务中。

● all:跳过所有资源文件的上传和加载

● app:跳过Spark应用程序文件的上传和加载

● deps:跳过所有依赖文件的上传和加载 -h,--help - 打印命令帮助

命令举例:

./submit --name <name> --queue <queue_name> --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.1.0.luxor.jar 10

./spark-submit --name <name> --queue <queue_name> word_count.py 说明

请使用"./spark-submit",不要使用"spark-submit",后者可能会使用本地环境中已有的Spark环 境,而不是DLI队列。

----结束