Spark是一个通用的大数据分析引擎,具有高性能、易用和普遍性等特点,可用于进行复杂的内存分析,构建大型、低延迟的数据分析应用。DataWorks为您提供CDH Spark节点,便于您在DataWorks上进行Spark任务的开发和周期性调度。本文为您介绍如何创建及使用CDH Spark节点。
前提条件
数据开发(DataStudio)中已创建业务流程。
数据开发(DataStudio)基于业务流程对不同开发引擎进行具体开发操作,所以您创建节点前需要先新建业务流程,操作详情请参见创建业务流程。
已创建阿里云CDH集群,并注册CDH集群至DataWorks。
创建CDH相关节点并开发CDH任务前,您需要先将CDH集群注册至DataWorks工作空间,操作详情请参见注册CDH集群至DataWorks。
(可选,RAM账号需要)进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员(权限较大,谨慎添加)角色权限,添加成员的操作详情请参见为工作空间添加空间成员。
已购买Serverless资源组并完成资源组配置,包括绑定工作空间、网络配置等,详情请参见新增和使用Serverless资源组。
使用限制
支持Serverless资源组(推荐)或旧版独享调度资源组运行该类型任务。
准备工作:开发Spark任务并获取JAR包
在使用DataWorks调度CDH Spark任务前,您需要先在CDH中开发Spark任务代码并完成任务代码的编译,生成编译后的任务JAR包,CDH Spark任务的开发指导详情请参见Spark概述。
后续您需要将任务JAR包上传至DataWorks,在DataWorks中周期性调度CDH Spark任务。
步骤一:创建CDH Spark节点
进入数据开发页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据开发。
右键单击某个业务流程,选择
。在新建节点对话窗中,配置节点的引擎实例、路径、名称等信息。
单击确认 ,完成节点创建,后续您可在创建的节点中进行对应任务的开发与配置操作。
步骤二:创建并引用CDH JAR资源
您可以在创建的CDH Spark节点中引用JAR包资源,并编写CDH Spark节点代码,通过Spark Submit命令提交任务。具体操作如下:
创建CDH JAR资源。
在对应业务流程中,右键单击
,选择 ,在新建资源对话框中点击上传,选择需要上传的文件。引用CDH JAR资源。
打开创建的CDH节点,停留在编辑页面。
在
中,找到待引用的资源(示例为spark-examples_2.11_2.4.0.jar
),右键单击资源名称,选择引用资源。引用资源后,若CDH节点的代码编辑页面出现
##@resource_reference{""}
格式的语句,表明已成功引用代码资源。示例如下:##@resource_reference{"spark_examples_2.11_2.4.0.jar"} spark_examples_2.11_2.4.0.jar
修改CDH Spark节点代码,补充Spark Submit命令,修改后的示例如下。
重要CDH Spark节点编辑代码时不支持注释语句,请务必参考如下示例改写任务代码,不要随意添加注释,否则后续运行节点时会报错。
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-submit --class org.apache.spark.examples.SparkPi --master yarn spark-examples_2.11-2.4.0.jar 100
其中:
org.apache.spark.examples.SparkPi:为您实际编译的JAR包中的任务主Class。
spark-examples_2.11-2.4.0.jar:为您实际上传的CDH JAR资源名称。
步骤三:配置任务调度
如果您需要周期性执行创建的节点任务,可以单击节点编辑页面右侧的调度配置,根据业务需求配置该节点任务的调度信息:
步骤四:调试代码任务
(可选)选择运行资源组、赋值自定义参数取值。
在工具栏单击图标,在参数对话框选择已调试运行需要使用的资源组。
如果您的任务代码中有使用调度参数变量,可在此处为变量赋值,用于调试。参数赋值逻辑详情请参见运行,高级运行和开发环境冒烟测试赋值逻辑有什么区别。
保存并运行SQL语句。
在工具栏,单击图标,保存编写的SQL语句,单击图标,运行创建的SQL任务。
(可选)冒烟测试。
如果您希望在开发环境进行冒烟测试,可在执行节点提交,或节点提交后执行,冒烟测试,操作详情请参见执行冒烟测试。
后续步骤
相关场景
DataWorks平台提供了完善的作业调度和监控功能,确保您的Spark作业能够顺利提交到CDH集群执行。这种方式不仅简化了作业的运维流程,还使得资源管理更为高效,以下是一些Spark任务的应用场景:
数据分析:利用Spark SQL、Dataset以及DataFrame API进行复杂的数据聚合、筛选和转换,快速洞察数据。
流处理:利用Spark Streaming处理实时数据流,并进行即时分析和决策。
机器学习任务:使用Spark MLlib进行数据预处理、特征提取、模型训练和评估。
大规模ETL任务:进行大数据集的抽取、转换和加载,为数据仓库或其他存储系统准备数据。