配置Hive目的端参数
参数名 |
说明 |
取值样例 |
---|---|---|
数据库名称 |
输入或选择写入数据的数据库名称。单击输入框后面的按钮可进入数据库选择界面。 |
default |
表名 |
输入或选择写入数据的目标表名。单击输入框后面的按钮可进入表的选择界面。 该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据,详细说明请参见使用时间宏变量完成增量同步。
说明:
如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为“数据开发作业计划启动时间-偏移量”,而不是“CDM作业实际启动时间-偏移量”。 |
TBL_X |
自动创表 |
只有当源端为关系数据库时,才有该参数。表示写入表数据时,用户选择的操作:
说明:
|
不自动创建 |
源端null值转换值 |
将源端null值转换为其他值。
|
TO_NULL |
导入前清空数据 |
选择目的端表中数据的处理方式。
|
是 |
换行符处理方式 |
对于写入Hive textfile格式表的数据中存在换行符的场景,指定对换行符的处理策略。
|
删除 |
Hive表分区字段 |
“自动创建”设置为“不自动创建”时,无该此参数。 对Hive建表设置分区字段,多个值以逗号隔开。 |
A,B |
表路径 |
“自动创建”设置为“不自动创建”时,无该此参数。 表路径。 |
- |
存储格式 |
“自动创建”设置为“不自动创建”时,无该此参数。 选择存储格式。
TEXTFILE使用明文存储,当数据存在特殊字符的场景下可能会导致数据写入错乱,请谨慎使用。建议优先使用ORC存储格式。 |
ORC |
hive表清理数据模式 |
“导入前清空数据”设置为“是”时,呈现此参数。 选择Hive表清理数据模式。
|
TRUCATE |
分区信息 |
“导入前清空数据”设置为“是”时,呈现此参数。目的端为分区表时,必须指定分区。 |
单分区:year=2020,location=sun; 多分区:['year=2020,location=sun', 'year=2021,location=earth']. 删除前一日分区: day='${dateformat(yyyy-MM-dd HH:mm:ss, -1, DAY)}', |
执行Analyze语句 |
数据全部写入完成后会异步执行ANALYZE TABLE语句,用于优化Hive表查询速度。 执行的SQL如下:
说明:
“执行Analyze语句”参数配置仅用于单表迁移场景。 执行Analyze语句可能会对Hive造成压力。 |
是 |
内部写队列内存最大值 |
当出现内存不足场景时,请酌情修改该参数,当参数过小时,会影响迁移速率。 取值范围是1-128,默认为空,不做限制,单位为MB,超出范围会设置为不限制。 |
16 |
内部转换队列内存最大值 |
当出现内存不足场景时,请酌情修改该参数,当参数过小时,会影响迁移速率。 取值范围是1-128,默认为空,不做限制,单位为MB,超出范围会设置为不限制。 |
16 |
- 源端Hive包含array和map类型时,目的端表格式只支持ORC和parquet复杂类型。若目的端表格式为RC和TEXT时,会对源数据进行处理,支持成功写入。
- 因map类型为无序的数据结构,迁移到目的端的数据类型可能跟源端顺序不一致。
- Hive作为迁移的目的时,如果存储格式为Textfile,在Hive创建表的语句中需要显式指定分隔符。例如:
CREATE TABLE csv_tbl( smallint_value smallint, tinyint_value tinyint, int_value int, bigint_value bigint, float_value float, double_value double, decimal_value decimal(9, 7), timestmamp_value timestamp, date_value date, varchar_value varchar(100), string_value string, char_value char(20), boolean_value boolean, binary_value binary, varchar_null varchar(100), string_null string, char_null char(20), int_null int ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = "\t", "quoteChar" = "'", "escapeChar" = "\\" ) STORED AS TEXTFILE;