创建数据传输任务

任务创建 - 图1 2021-06-29-21-05-05.png

1 功能入口

任务创建 - 图3 2021-06-29-21-05-48.png

2 创建单个任务

2.1 填写任务基本信息

任务创建 - 图5 2021-06-29-21-08-49.png

基本信息 说明
任务名称 必填项,中英文开头,支持连字符(-)或下划线(_),长度不超过128个字符
负责人 默认为创建任务的用户,可选择本项目下任一用户为任务负责人
任务类型 必填项,选项为普通类型和SQL模式类型。SQL模式类型支持编写SQL语言读取数据源数据
描述 输入同步任务描述,最长不超过128个字符

2.2 配置数据来源与去向

任务创建 - 图7 2021-08-20-11-41-22.png

  • 数据来源
基本信息 说明
数据源 必填项,选择数据源类型及数据源名称
查找方式 必填项,选项为【库表选择】和【正则匹配】,默认为【库表选择】。
【库表选择】:支持下拉列表选择数据库表或搜索选择数据库表。
【正则匹配】:在第一栏选择数据库,在第二栏输入分表正则表达式来匹配数据表,点击【解析】按钮可查看正则匹配结果(只显示匹配结果的前10张表)
数据过滤 选项为:条件、流水型、自定义。具体说明如下:
条件:按列设置过滤规则,可添加一或多组条件,条件默认为AND关系
流水型:从选择字段的起始值开始读取数据,读取到最新记录位置,下次从上次的最新记录读取至当前的最新记录
自定义:填写where过滤语句(不含where关键字),通常用作增量同步,支持调度时间参数。时间参数用法详见* 时间参数用法详解。具体说明如下:增量同步在实际业务场景中,往往会选择当天的数据进行同步,通常需要编写where条件语句,需先确认表中描述增量字段(时间戳)为哪一个。如表增量的字段为create_time,则填写create_time>需要的日期 ,如果需要日期动态变化,可以填写如create_time>${azkaban.flow.1.days.ago} and create_time<${azkaban.flow.current.date}
特殊字符替换 选择是否开启及替换内容
并发读取 选择是否开启并发读取。读取的数据将会根据切分键,按照并发度切分成指定的份数。
流量控制 必填项。默认为不限速
  • 数据去向
基本信息 说明
数据源 必填项,选择数据源类型及数据源名称
库表选择 必填项,选择数据库及表
写入规则 写入规则默认为Insert overwrite,说明如下:
Insert overwrite:覆盖数据,即先删除原表的数据,再执行写入操作
Insert into:以追加的方式向原表尾部追加数据
Insert Ignore:若数据库已存在相同的记录,则跳过当前插入的这条数据;若不存在,则插入新的数据
Upsert:更新或插入,若未找到符合条件的数据,则插入这条数据,若找到,则正常更新数据

2.3 配置字段映射

任务创建 - 图9 2021-08-20-14-06-55.png

基本信息 说明
来源表字段 支持选择列名、不导入和自定义表达式。字段映射的默认匹配策略是列名匹配,若列名无法匹配,则该列来源字段显示为不导入,支持用户手动修改匹配的列
不导入:目标表中的这个字段将不会导入任何数据,需要注意目标表字段是否允许为空,不允许为空的字段或数据源不允许字段缺失,会导致任务报错
自定义表达式:自定义表达式格式为: ${表达式} as ${去向表列名}。如果输入‘a’,那么这个字段会导入字符串‘a’;也可以输入源端数据库支持的SQL表达式比如 current_timestamp as last_modify_time,将任务运行时间导入目标表的last_modify_time字段

2.4 高级设置

任务创建 - 图11 2021-08-20-14-08-04.png

属性下拉列表选项包含作业参数、数据来源与数据去向对应的源端参数与目标端参数。属性及属性值说明如下:

  • 常用作业参数
属性 默认值 说明 支持版本
ndi.show-argument boolean FALSE 日志中打印作业配置 1.0.0+
ndi.spark.spark-argument.executor-memory 调度节点Spark client使用的值,具体值请咨询技术支持。 作业运行时,单个节点使用的内存。单位为g。 1.0.0+
ndi.spark.spark-conf.spark.sql.hive.convertMetastoreParquet boolean值 TRUE 值为false时,将使用读写hive表时使用hive的serde。
参考文档:
https://spark.apache.org/docs/latest/sql-data-sources-parquet.html
1.0.0+
ndi.enableColumnQuote boolean值 默认false。部分表在创建时列名使用了数据库关键字或特殊符号,在作业运行过程中,会报语法错误。如果表中使用了数据库关键字可以将该值设置为true,会根据来源库类型给列名添加引号。 1.8.3+
ndi.spark.spark-conf.spark.sql.parquet.compression.codec none, uncompressed, snappy, gzip, lzo, brotli, lz4, zstd snappy 写去parquet文件时使用的压缩编码。当hive表为parquet时生效。
hive表属性中指定的压缩编码具有更高的优先级。
参考文档:
https://spark.apache.org/docs/latest/sql-data-sources-parquet.html
1.0.0+
ndi.spark.spark-conf.spark.sql.parquet.writeLegacyFormat boolean值 FALSE 写入parquet文件使用的格式。
当设置为true时,会兼容hive和impala使用的parquet格式。
当值为false时,可能会导致写入hive后,在查询时报错。
参考文档:
https://spark.apache.org/docs/latest/sql-data-sources-parquet.html
1.0.0+
ndi.spark.spark-conf.spark.task.maxFailures 4 Task 重启次数超过 spark.task.maxFailures,则 taskSet 会失败,即一个 stage 失败。stage 失败导致整个 Job 就失败了,spark 会取消该 stage 对应的 job 包含的所有 task,并返回用户任务执行失败。 1.0.0+
ndi.spark.spark-conf.spark.stage.maxConsecutiveAttempts 4 在一个 stage 被中止之前,允许的连续 stage 重试的次数 1.0.0+
ndi.spark.spark-conf.spark.yarn.max.executor.failures 作业重试次数。不支持幂等写入的数据源会在重试时会导致数据重复。 1.0.0+
ndi.spark.spark-conf.spark.yarn.maxAppAttempts int值 yarn.resourcemanager.am.max-attempts的值 默认为 yarn.resourcemanager.am.max-attempts 的值,如果要设置,需小于它的值
yarn.resourcemanager.am.max-attempts:默认为2
1.0.0+
ndi.spark.spark-conf.spark.hadoop.hive.exec.max.dynamic.partitions hive动态分区的最大分区数。默认值为hive-site.xml中的配置。 1.8.0+
ndi.analyzeTableStatistics boolean值 FALSE 是否计算hive的统计信息写入到metastore 1.8.3+
ndi.spark.spark-conf.XXX XXX为Spark_2.3.2支持的配置项。 1.0.0+
ndi.spark.spark-argument.YYY YYY为spark-submit脚本支持的argument。ddb的读写任务会使用该参数上传认证文件,如果需要在ddb任务使用该files时,请联系技术支持。
  • 数据来源端参数

任务创建 - 图13| 数据来源端可配置参数如下表.png

  • 数据去向端参数

任务创建 - 图15 2021-08-20-14-40-03.png

3 批量创建任务

当前仅支持批量创建数据去向指定为Hive数据库的离线同步任务,数据来源可选:MySQL、DB2、HANA、DM、SQLServer、PostgreSQL、DDB(DBI)、DDB(QS)、Oracle。

3.1 配置批量任务

任务创建 - 图17 2021-06-30-11-01-06.png

基本信息 说明
数据来源 必填项,选择抽取数据源的数据源类型
任务名称 必填项,默认为xxx2hivendi${sourcetable},xxx为数据来源,hive为数据去向,${source_table}是源表名参数,按照“数据来源2数据去向_ndi源表名”的格式批量生成任务名称
数据源 必填项,选择数据源名称与数据库名称
来源表 选择数据源后,来源表栏自动显示数据源内所有表,选择来源表的方式有3种:
1.直接勾选需要抽取的源表,点击【取消所有选中的表】按钮可支持反选;
2.【选择未生成任务的表】;
【表名文件匹配】:上传内容为源表名的text文件,文件中换行符分隔不同表名(最多支持1000行),由系统匹配表名对应的源表。备注:搜索框输入源表名可搜索到表名含输入字段的表
生成表设置 支持批量配置数据去向表
任务创建 - 图192021-06-30-11-06-19.png
导出方式 选项为全量、增量,默认全量
数据抽取流量控制 必填项,选项为不限速、限速,默认不限速

任务创建 - 图21 2021-06-30-11-07-40.png | 基本信息 | 说明| | —— | —— | |去向hive库|必填项,下拉选择hive库| |写入规则|默认为Insert overwrite。
Insert overwrite:覆盖数据,即先删除原表的数据,再执行写入操作
Insert into:以追加的方式向原表尾部追加数据 |写入方式|当数据去向表为非分区表时,系统默认写入到表中(不可修改)
当数据去向表为分区表时,系统默认写入到分区中及写入分区字段,分区值可下拉选择系统内置时间参数| |写入流量控制|必填项,选项为不限速、限速,默认不限速|

任务配置完成后,点击【生成】按钮后,任务创建成功

3.2 任务生成与预览

任务创建 - 图23 2021-06-30-11-10-42.png

可查看任务名称、源表、目标表和生成状态。若生成状态为创建成功,代表任务已创建成功。 特别说明:当生成状态为创建成功时,任务已创建成功,点击新建批量任务的返回按钮无法撤销任务。若需要撤销任务,请在任务列表中删除任务。