
任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载导读本文围绕 Apache DolphinScheduler 中的 Sqoop 任务节点系统讲解如何在低代码 DAG 中编排 Apache Sqoop 的 import / export 作业实现 RDBMS 与 HDFS / Hive 之间的数据同步。你将掌握 Sqoop 节点的完整参数含义与取值规则、MySQL→Hive 导入的端到端配置示例以及任务底层如何把表单参数动态拼装为真实sqoop命令行脚本含源码佐证从而在生产环境中可靠地使用该任务类型。概览Sqoop 任务节点是什么Sqoop 任务类型用于执行 Sqoop 应用。DolphinScheduler 的 Worker 会调用本机环境中的sqoop命令来执行任务因此它是一个表单化包装 Sqoop 命令的任务节点用户在 DAG 画布上拖入 Sqoop 节点以表单方式声明数据源、数据目标与同步参数Worker 端最终将这些参数生成一段完整的sqoop脚本并以 YARN 任务的方式提交运行。从源码结构看该任务插件位于 dolphinscheduler-task-plugin/dolphinscheduler-task-sqoop核心执行类 SqoopTask.java 继承自AbstractYarnTask即它最终像 Spark、MapReduce 任务一样以 YARN 应用形态运行。任务支持两种作业模式TEMPLATE模板模式通过界面表单填写源/目标参数由代码自动拼装sqoop命令行是本文重点CUSTOM自定义模式直接编写自定义sqoopshell 脚本适合需要完全控制命令行的场景。创建 Sqoop 任务节点在 DolphinScheduler Web UI 中创建 Sqoop 节点的操作路径如下进入项目管理 - 项目名称 - 工作流定义点击创建工作流按钮进入 DAG 编辑页面从左侧工具栏拖拽 Sqoop 节点图标到画布上该图标即 Sqoop 节点与官方文档中的图标一致。拖入画布后双击节点即可在右侧配置面板中填写任务参数。关于任务节点通用参数如任务名称、运行环境、失败重试、告警分组、超时等请参考 DolphinScheduler 任务参数附录 中的Default Task Parameters一节本文不再重复。任务参数详解Sqoop 节点在通用任务参数之上还包含以下专属参数参数说明Job Namemap-reduce 作业名称对应-D mapred.job.nameDirect(1)import将 RDBMS 中的单张表导入 HDFS 或 Hive(2)export将 HDFS 或 Hive 中的一组文件导出回 RDBMSHadoop ParamsSqoop 作业的自定义 Hadoop 参数以-D keyvalue形式注入Sqoop Advanced ParametersSqoop 作业的高级参数以key value形式原样追加到命令行Data Source - Type选择对应的数据源类型MYSQL / HIVE / HDFS / ORACLE / HANA / SQLSERVERData Source - Datasource选择对应的数据源下拉选择在数据源中心预先注册的 DataSourceData Source - ModelType(1)Form从表同步数据需填写Table和ColumnType(2)SQL同步 SQL 查询结果需填写SQL StatementData Source - Table设置导入到 Hive 时使用的表名Data Source - ColumnType(1)All Columns导入所选表的全部字段(2)Some Columns导入所选表的指定字段需填写ColumnData Source - Column填写字段名多个字段用逗号分隔Data Source - SQL Statement填写 SQL 查询语句对应--queryData Source - Map Column Hive覆盖指定列从 SQL 类型到 Hive 类型的映射对应--map-column-hiveData Source - Map Column Java覆盖指定列从 SQL 类型到 Java 类型的映射对应--map-column-javaData Target - Type选择对应的数据目标类型MYSQL / HIVE / HDFS / ORACLE / HANA / SQLSERVERData Target - Database填写 Hive 数据库名对应--hive-databaseData Target - Table填写 Hive 表名对应--hive-tableData Target - CreateHiveTable是否在导入时于 Hive 中建表对应--create-hive-table若开启当目标 Hive 表已存在时作业将失败Data Target - DropDelimiter导入 Hive 时是否丢弃字符串字段中的\n、\r和\01对应--hive-drop-import-delimsData Target - OverWriteSrc是否覆盖 Hive 表中的已有数据对应--hive-overwrite同时追加--delete-target-dirData Target - Hive Target Dir显式指定目标目录对应--target-dir不填则由 Sqoop 自动决定Data Target - ReplaceDelimiter导入 Hive 时用自定义字符串替换字段中的\n、\r、\01对应--hive-delims-replacementData Target - Hive partition Keys填写 Hive 分区键名多个用逗号分隔对应--hive-partition-keyData Target - Hive partition Values填写 Hive 分区值多个用逗号分隔对应--hive-partition-valueData Target - Target Dir填写 HDFS 目标目录对应--target-dirData Target - DeleteTargetDir若目标目录已存在则先删除对应--delete-target-dirData Target - CompressionCodec选择 Hadoop 压缩编解码器对应--compression-codecData Target - FileType选择存储类型如 AVRO / PARQUET / TEXTFILE 等Data Target - FieldsTerminated设置字段分隔符对应--fields-terminated-byData Target - LinesTerminated设置行结束符对应--lines-terminated-by参数与底层命令的对应关系上述表单参数并非直接透传而是由插件内的生成器按角色拼装。从 SqoopConstants.java 可以看到所有常量与 Sqoop 原生命令的映射通用段sqoop、-D mapred.job.name、-D sqoop.export.records.per.statement、-m并行度、--split-by数据库段--connect、--driver、--username、--password、--table、--columns、--query、--map-column-hive、--map-column-javaHDFS 段--export-dir、--target-dir、--compression-codecHive 段--hive-import、--hive-database、--hive-table、--create-hive-table、--hive-drop-import-delims、--hive-overwrite、--delete-target-dir、--hive-delims-replacement、--hive-partition-key、--hive-partition-value更新模型--update-key、--update-mode。数据源侧支持的类型在 SqoopParameters.java 的getSourceParameter/getTargetParameter中逐一映射到对应参数类即源与目标均可选择 MYSQL、HIVE、HDFS、ORACLE、HANA、SQLSERVER 六种类型中的一种。任务执行与脚本生成原理执行链路SqoopTask.java 的init()方法负责初始化将任务 JSON 参数反序列化为SqoopParameters调用checkParameters()做参数合法性校验失败则抛出TaskException通过generateExtendedContext()从资源参数中解析数据源连接信息含解密后的连接参数注册密码脱敏正则SqoopConstants.SQOOP_PASSWORD_REGEX确保--password xxx中的明文密码在日志中被打码显示。随后getScript()调用 SqoopJobGenerator.java 生成脚本TEMPLATE 模式按sourceType/targetType创建对应的 Source/Target 生成器最终脚本 CommonGenerator输出 SourceGenerator输出 TargetGenerator输出CUSTOM 模式直接使用用户填写的customShell自动将\r\n统一为系统换行符。参数校验规则SqoopParameters.checkParameters() 中规定了两种模式的必填约束TEMPLATE必须填写modelType、jobName、sourceType、targetType、sourceParams、targetParams且concurrency ! 0、customShell为空CUSTOM必须填写customShell且jobName为空。注意concurrency ! 0是模板模式的硬性校验项因此在表单中并行度必须显式设置为非 0 值。通用段脚本的生成细节CommonGenerator.java 生成脚本的公共前缀拼装顺序如下sqoop modelType -D sqoop.export.records.per.statement1 -D mapred.job.namejobNamemodelType即 import 或 exportDirect 参数sqoop.export.records.per.statement固定为 1Hadoop Params中每一项以-D propvalue追加Sqoop Advanced Parameters中每一项以prop value原样追加适合--connect、--driver这类键值对形式的原生参数当concurrency 0时追加-m concurrency当concurrency 1时还会追加--split-by splitBysplit-by 由表单的拆分列决定。源端脚本生成细节以 MySQL 为例MySQLSourceGenerator.java 负责拼装源端命令从任务上下文取出数据源连接参数解密密码后生成--connect jdbc:mysql://host:port/db --username user --password decoded-password依据 ModelType 分支Form追加--table srcTable若 ColumnType 为 Some Columns 且已填列名再追加--columns col1,col2,...SQL追加--query srcQuerySql ...并自动追加$CONDITIONS占位符——若 SQL 中已包含where关键字则追加AND \$CONDITIONS否则追加WHERE \$CONDITIONS这是 Sqoop 并发导入拆分数据的必要条件若配置了Map Column Hive / Map Column Java则按propvalue,prop2value2形式生成--map-column-hive .../--map-column-java ...。其余源类型HIVE / HDFS / ORACLE / HANA / SQLSERVER均有对应的 sources 目录 下的独立生成器实现。目标端脚本生成细节以 Hive、HDFS 为例HiveTargetGenerator.java 生成 Hive 目标段命令始终以--hive-import开头填了库名和表名时追加--hive-database db --hive-table tableCreateHiveTabletrue追加--create-hive-tableDropDelimitertrue追加--hive-drop-import-delimsOverWriteSrctrue追加--hive-overwrite --delete-target-dir填了ReplaceDelimiter追加--hive-delims-replacement value同时填了分区键与分区值时追加--hive-partition-key keys --hive-partition-value values填了Hive Target Dir追加--target-dir dir。HdfsTargetGenerator.java 则生成 HDFS 目标段依次追加--target-dir path、--compression-codec codec、fileType、--delete-target-dir可选字段/行分隔符以单引号包裹--fields-terminated-by v --lines-terminated-by v固定追加--null-non-string NULL --null-string NULL将空值统一替换为 NULL 字符串。数据源资源的绑定模板模式下任务会通过 getResources() 把源/目标数据源 ID 注册为ResourceType.DATASOURCE资源执行时由 generateExtendedContext() 从资源中心解析出真实连接串并注入生成器。这意味着数据源密码等敏感信息不会出现在任务定义里而是运行时统一获取、统一脱敏。任务示例从 MySQL 导入数据到 Hive下面演示一个完整示例将 MySQL 数据库test中的example表数据导入 Hive。示例数据如下图所示第一步配置 Sqoop 运行环境Sqoop 任务在 Worker 节点上以sqoop命令方式执行。若要在生产环境使用 Sqoop 任务类型必须确保运行该任务的 Worker 机器上已正确安装 Sqoop且sqoop命令在 PATH 中可用同时 Worker 需具备访问目标 Hive / HDFS 集群的客户端环境hive、hadoop 命令及对应依赖。可先在 Worker 上手动执行sqoop version验证环境是否就绪。第二步配置 Sqoop 任务节点按下图指引填写节点内容本示例的关键配置如下参数值Job Namesqoop_mysql_to_hive_testData Source - TypeMYSQLData Source - DatasourceMYSQL MyTestMySQLMyTestMySQL 可替换为你自定义的数据源名称需提前在数据源中心注册Data Source - ModelTypeFormData Source - TableexampleData Source - ColumnTypeAll ColumnsData Target - TypeHIVEData Target - DatabasetmpData Target - TableexampleData Target - CreateHiveTabletrueData Target - DropDelimiterfalseData Target - OverWriteSrctrueData Target - Hive Target Dir无需填写Data Target - ReplaceDelimiter,Data Target - Hive partition Keys无需填写Data Target - Hive partition Values无需填写结合上文源码可知该配置最终会生成类似如下的脚本密码已被运行时注入与脱敏sqoop import -D sqoop.export.records.per.statement1 -D mapred.job.namesqoop_mysql_to_hive_test -m 1 \ --connect jdbc:mysql://host:3306/test --username user --password ****** \ --table example \ --hive-import --hive-database tmp --hive-table example \ --create-hive-table --hive-overwrite --delete-target-dir \ --hive-delims-replacement ,第三步查看运行结果保存并运行工作流后可在任务实例/工作流实例页面查看执行日志与状态。任务成功时日志中会输出 MapReduce 作业的执行信息与导入行数统计若执行失败优先排查三类问题环境类Worker 上sqoop命令缺失、Hive/HDFS 客户端配置错误或未认证Kerberos导致连接失败数据源类Data Source - Datasource指向的数据源连接串、账号密码是否正确Worker 是否能连通对应 RDBMS目标表类CreateHiveTabletrue时目标 Hive 表已存在会导致失败正如参数说明所述此时可改为 false 或先清理目标表。常见使用建议并行导入需要提升导入性能时将并行度-m设为大于 1 的值并同时填写splitBy拆分列源码会在concurrency 1时自动追加--split-bySQL 模式必须带$CONDITIONS选择 SQL 模式时插件会自动追加AND \$CONDITIONS或WHERE \$CONDITIONS因此不要在该 SQL 末尾使用分号结尾否则可能造成命令拼接异常敏感信息保护插件通过 SqoopConstants.SQOOP_PASSWORD_REGEX 对--password ...进行日志脱敏排查问题时注意不要在自定义脚本中自行打印密码自定义脚本场景当表单无法覆盖某些高级 Sqoop 特性时可切换到 CUSTOM 模式直接编写sqoop脚本此时 jobName 必须留空脚本会原样执行。小结Sqoop 任务节点是 DolphinScheduler 数据同步工作流中的重要一环它把繁琐的sqoop命令行封装为低代码表单同时通过 SqoopTask.java →SqoopJobGenerator→ 各类 Source/Target 生成器的调用链将表单参数逐段拼装为可在 YARN 上运行的 import / export 脚本。理解每一段命令的生成规则通用段、源端段、目标端段后你就能准确预判任意表单组合产出的实际命令从而快速定位导入导出失败的原因并基于此设计出稳定、可维护的 MySQL→Hive及 HDFS、Oracle、SQLServer、HANA 等同步任务。赞分享任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载相关推荐Apache DolphinScheduler Sqoop 任务节点MySQL 到 Hive 数据导入实战与源码解析Apache DolphinScheduler Sqoop 任务节点MySQL 到 Hive 数据导入实战与源码解析 本文是 Apache DolphinSc任务调度数据编排工作流自动化后端大数据Apache DolphinScheduler SQOOP 节点实战指南任务参数详解与 MySQL 到 Hive 数据同步Apache DolphinScheduler SQOOP 节点实战指南任务参数详解与 MySQL 到 Hive 数据同步 本指南完整讲解 Apache Do任务调度数据编排工作流自动化后端大数据Apache DolphinScheduler ChunJun 任务节点实战指南从 JSON 配置到 Hive 数据同步Apache DolphinScheduler ChunJun 任务节点实战指南从 JSON 配置到 Hive 数据同步 ChunJun原 FlinkX是任务调度大数据后端前端上一篇SpatialThinker-30B-i1-GGUF模型架构详解专家混合与多模态融合技术下一篇【亲测免费】 推荐开源项目《学习 Go 语言》第二版创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考