更新时间:2024-08-05 GMT+08:00

配置Hive目的端参数

作业中目的连接为Hive连接时,目的端作业参数如表1所示。

表1 Hive作为目的端时的作业参数

参数名

说明

取值样例

数据库名称

输入或选择写入数据的数据库名称。单击输入框后面的按钮可进入数据库选择界面。

default

表名

输入或选择写入数据的目标表名。单击输入框后面的按钮可进入表的选择界面。

该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据,详细说明请参见使用时间宏变量完成增量同步

说明:

如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为“数据开发作业计划启动时间-偏移量”,而不是“CDM作业实际启动时间-偏移量”。

TBL_X

自动创表

只有当源端为关系数据库时,才有该参数。表示写入表数据时,用户选择的操作:
  • 不自动创建:不自动建表。
  • 不存在时创建:当目的端的数据库没有“表名”参数中指定的表时,CDM会自动创建该表。如果“表名”参数配置的表已存在,则不创建,数据写入到已存在的表中。
  • 先删除后创建:CDM先删除“表名”参数中指定的表,然后再重新创建该表。
说明:
  • 自动建表只同步列注释,表注释不会被同步。
  • 自动建表不支持同步主键。

不自动创建

导入前清空数据

选择目的端表中数据的处理方式:
  • 是:任务启动前会清除目标表中数据。
  • 否:导入前不清空目标表中的数据,如果选“否”且表中有数据,则数据会追加到已有的表中。

待清空分区

“导入前清空数据”设置为“是”时,呈现此参数。

填写待清空分区信息后,表示清空该分区的数据。

单分区:year=2020,location=sun;

多分区:['year=2020,location=sun', 'year=2021,location=earth'].

执行Analyze语句

数据全部写入完成后会异步执行ANALYZE TABLE语句,用于优化Hive表查询速度,执行的SQL如下:

  • 非分区表:ANALYZE TABLE tablename COMPUTE STATISTICS
  • 分区表:ANALYZE TABLE tablename PARTITION(partcol1[=val1], partcol2[=val2], ...) COMPUTE STATISTICS
说明:

“执行Analyze语句”参数配置仅用于单表迁移场景。

  • Hive作为目的端时,会自动创建存储格式为ORC的表。
  • 由于文件格式限制,当前仅支持ORC与Parquet格式写入复杂类型。
  • 源端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;