暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

74. dolphinscheduler 配置spark、SQL、Sqoop任务

大数据技能圈 2023-04-21
185

1. SPARK节点

1.1 综述

Spark 任务类型用于执行 Spark 应用。对于 Spark 节点,worker 支持两个不同类型的 spark 命令提交任务:

(1) spark submit 方式提交任务。

(2) spark sql 方式提交任务。

1.2 创建任务

点击项目管理 -> 项目名称 -> 工作流定义,点击”创建工作流”按钮,进入 DAG 编辑页面:

拖动工具栏的任务节点到画板中。

1.3 任务参数

程序类型:支持 Java、Scala、Python 和 SQL 四种语言。

主函数的 Class:Spark 程序的入口 Main class 的全路径。

主程序包:执行 Spark 程序的 jar 包(通过资源中心上传)。

SQL脚本:Spark sql 运行的 .sql 文件中的 SQL 语句。

部署方式:

(1) spark submit 支持 cluster、client 和 local 三种模式。

(2) spark sql 支持 client 和 local 两种模式。

命名空间(集群):若选择命名空间(集群),则以原生的方式提交至所选择 K8S 集群执行,未选择则提交至 Yarn 集群执行(默认)。

任务名称(可选):Spark 程序的名称。

Driver 核心数:用于设置 Driver 内核数,可根据实际生产环境设置对应的核心数。

Driver 内存数:用于设置 Driver 内存数,可根据实际生产环境设置对应的内存数。Executor 数量:用于设置 Executor 的数量,可根据实际生产环境设置对应的内存数。Executor 内存数:用于设置 Executor 内存数,可根据实际生产环境设置对应的内存数。

主程序参数:设置 Spark 程序的输入参数,支持自定义参数变量的替换。

选项参数:支持 --jars--files--archives--conf 格式。

资源:如果其他参数中引用了资源文件,需要在资源中选择指定。

自定义参数:是 Spark 局部的用户自定义参数,会替换脚本中以 ${变量} 的内容。

1.3 任务样例

1.3.1 spark submit

1.3.1.1 执行 WordCount 程序

本案例为大数据生态中常见的入门案例,常应用于 MapReduce、Flink、Spark 等计算框架。主要为统计输入的文本中,相同的单词的数量有多少。

1.3.1.2 在 DolphinScheduler 中配置 Spark 环境

若生产环境中要是使用到 Spark 任务类型,则需要先配置好所需的环境。配置文件如下:bin/env/dolphinscheduler_env.sh

1.3.1.3 上传主程序包

在使用 Spark 任务节点时,需要利用资源中心上传执行程序的 jar 包,可参考资源中心

当配置完成资源中心之后,直接使用拖拽的方式,即可上传所需目标文件。

1.3.1.4 配置 Spark 节点

根据上述参数说明,配置所需的内容即可。

1.3.2 spark sql

1.3.2.1 执行 DDL 和 DML 语句

本案例为创建一个视图表 terms 并写入三行数据和一个格式为 parquet 的表 wc 并判断该表是否存在。程序类型为 SQL。将视图表 terms 的数据插入到格式为 parquet 的表 wc。

1.3.3 注意事项:

注意:JAVA 和 Scala 只用于标识,使用 Spark 任务时没有区别。如果应用程序是由 Python 开发的,那么可以忽略表单中的参数Main Class。参数SQL脚本仅适用于 SQL 类型,在 JAVA、Scala 和 Python 中可以忽略。

SQL 目前不支持 cluster 模式。

2. SQL

2.1 综述

SQL任务类型,用于连接数据库并执行相应SQL。

2.2 创建数据源

可参考 数据源配置 数据源中心

2.3 创建任务

点击项目管理-项目名称-工作流定义,点击"创建工作流"按钮,进入DAG编辑页面。

工具栏中拖动到画板中,选择需要连接的数据源,即可完成创建。

2.4 任务参数

数据源:选择对应的数据源

sql类型:支持查询和非查询两种。

查询:支持 DML select 类型的命令,是有结果集返回的,可以指定邮件通知为表格、附件或表格附件三种模板;

非查询:支持 DDL全部命令 和 DML update、delete、insert 三种类型的命令;

默认采用;\n作为SQL分隔符,拆分成多段SQL语句执行。Hive的JDBC不支持一次执行多段SQL语句,请不要使用;\n

sql参数:输入参数格式为key1=value1;key2=value2…

sql语句:SQL语句

UDF函数:对于HIVE类型的数据源,可以引用资源中心中创建的UDF函数,其他类型的数据源暂不支持UDF函数。

自定义参数:SQL任务类型,而存储过程是自定义参数顺序,给方法设置值自定义参数类型和数据类型,同存储过程任务类型一样。区别在于SQL任务类型自定义参数会替换sql语句中${变量}。

前置sql:前置sql在sql语句之前执行。

后置sql:后置sql在sql语句之后执行。

2.5 任务样例

2.5.1 Hive表创建示例

2.5.1.1 在hive中创建临时表并写入数据

该样例向hive中创建临时表tmp_hello_world并写入一行数据。选择SQL类型为非查询,在创建临时表之前需要确保该表不存在,所以我们使用自定义参数,在每次运行时获取当天时间作为表名后缀,这样这个任务就可以每天运行。创建的表名格式为:tmp_hello_world_{yyyyMMdd}
注意sql任务组件的hive应用是基于JDBC去调用,SQL statement 不支持多行执行,请注意不要在语句末尾使用';'。如果要执行多行语句请使用Hive-Cli任务。

2.5.1.2 运行该任务成功之后在hive中查询结果

登录集群使用hive命令或使用beelineJDBC等方式连接apache hive进行查询,查询SQL为select * from tmp_hello_world_{yyyyMMdd},请将{yyyyMMdd}替换为运行当天的日期,查询截图如下:

2.6 使用前置sql和后置sql示例

在前置sql中执行建表操作,在sql语句中执行操作,在后置sql中执行清理操作。

2.7 注意事项

注意SQL类型的选择,如果是INSERT等操作需要选择非查询类型。

为了兼容长会话情况,UDF函数的创建是通过CREATE OR REPLACE语句


3. SQOOP 节点

3.1 综述

SQOOP 任务类型,用于执行 SQOOP 程序。对于 SQOOP 节点,worker 会通过执行 sqoop 命令来执行 SQOOP 任务。

3.2 创建任务

点击项目管理 -> 项目名称 -> 工作流定义,点击“创建工作流”按钮,进入 DAG 编辑页面;

拖动工具栏的任务节点到画板中。

3.3 任务参数

任务参数

描述

任务名称

map-reduce 任务名称

流向

(1) import:从 RDBMS 导入 HDFS 或Hive (2) export:从 HDFS 或 Hive 导出到 RDBMS

Hadoop 参数

添加自定义 Hadoop 参数

Sqoop 参数

添加自定义 Sqoop 参数

数据来源 - 类型

选择数据源类型

数据来源 - 数据源

选择数据源

数据来源 - 模式

(1) 单表:同步单张表的数据,需填写表名列类型 (2) SQL:同步 SQL 查询的结果,需填写SQL语句

数据来源 - 表名

设置需要导入 hive 的表名

数据来源 - 列类型

(1) 全表导入:导入表中的所有字段 (2) 选择列:导入表中的指定列,需填写信息

数据来源 - 列

填写字段名称,多个字段之间使用英文逗号分割

数据来源 - SQL 语句

填写 SQL 查询语句

数据来源 - Hive 类型映射

自定义 SQL 与 Hive 类型映射

数据来源 - Java 类型映射

自定义 SQL 与 Java 类型映射

数据目的 - 类型

选择数据目的类型

数据目的 - 数据库

填写 Hive 数据库名称

数据目的 - 表名

填写 Hive 表名

数据目的 - 是否创建新表

选择是否自动根据导入数据类型创建数据目的表,如果目标表已经存在了,那么创建任务会失败

数据目的 - 是否删除分隔符

自动删除字符串中的\n\r\01字符

数据目的 - 是否覆盖数据源

覆盖 Hive 表中的现有数据

数据目的 - Hive 目标路径

自定义 Hive 目标路径

数据目的 - 替换分隔符

替换字符串中的\n\r\01字符

数据目的 - Hive 分区键

填写 Hive 分区键,多个分区键之间使用英文逗号分割

数据目的 - Hive 分区值

填写 Hive 分区值,多个分区值之间使用英文逗号分割

数据目的 - 目标路径

填写 HDFS 的目标路径

数据目的 - 是否删除目录

如果目录已经存在,则删除目录

数据目的 - 压缩类型

选择 HDFS 文件压缩类型

数据目的 - 保存格式

选择文件保存格式

数据目的 - 列分隔符

自定义列分隔符

数据目的 - 行分隔符

自定义行分隔符

3.4 任务样例

该样例演示为从 MySQL 数据导入到 Hive 中。其中 MySQL 数据库名称为:test,表名称为example。下图为样例数据。

3.4.1 配置 Sqoop 环境

若生产环境中要是使用到 Sqoop 任务类型,则需要先配置好所需的环境。确保任务节点可以执行sqoop命令。

3.4.2 配置 Sqoop 任务节点

可按照下图步骤进行配置节点内容。

本样例中的关键配置如下表。

任务参数

参数值

任务名称

sqoop_mysql_to_hive_test

流向

import

数据来源 - 类型

MYSQL

数据来源 - 数据源

MYSQL MyTestMySQL(您可以将MyTestMySQL改成您自己取的数据源名称)

数据来源 - 模式

表单

数据来源 - 表名

example

数据来源 - 列类型

全表导入

数据目的 - 类型

HIVE

数据目的 - 数据库

tmp

数据目的 - 表名

example

数据目的 - 是否创建新表

true

数据目的 - 是否删除分隔符

false

数据目的 - 是否覆盖数据源

true

数据目的 - Hive 目标路径

(无需填写)

数据目的 - 替换分隔符

,

数据目的 - Hive 分区键

(无需填写)

数据目的 - Hive 分区值

(无需填写)

3.4.3 查看运行结果

更多大数据内容请关注字节智传公众号:

文章转载自大数据技能圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论