配置Hive目的端参数
| 
       参数名  | 
     
       说明  | 
     
       取值样例  | 
    
|---|---|---|
| 
       数据库名称  | 
     
       输入或选择写入数据的数据库名称。单击输入框后面的按钮可进入数据库选择界面。  | 
     
       default  | 
    
| 
       表名  | 
     
       输入或选择写入数据的目标表名。单击输入框后面的按钮可进入表的选择界面。 该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据,详细说明请参见使用时间宏变量完成增量同步。 
        说明: 
        如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为“数据开发作业计划启动时间-偏移量”,而不是“CDM作业实际启动时间-偏移量”。  | 
     
       TBL_X  | 
    
| 
       自动创表  | 
     
       
       只有当源端为关系数据库时,才有该参数。表示写入表数据时,用户选择的操作:
        
      
 
        说明: 
        
  | 
     
       不自动创建  | 
    
| 
       源端null值转换值  | 
     
       将源端null值转换为其他值。 
  | 
     
       TO_NULL  | 
    
| 
       导入前清空数据  | 
     
       
       选择目的端表中数据的处理方式。
        
  | 
     
       是  | 
    
| 
       换行符处理方式  | 
     
       对于写入Hive textfile格式表的数据中存在换行符的场景,指定对换行符的处理策略。 
  | 
     
       删除  | 
    
| 
       Hive表分区字段  | 
     
       “自动创建”设置为“不自动创建”时,无此参数。 对Hive建表设置分区字段,多个值以逗号隔开。  | 
     
       A,B  | 
    
| 
       表路径  | 
     
       “自动创建”设置为“不自动创建”时,无此参数。 表路径。  | 
     
       -  | 
    
| 
       存储格式  | 
     
       “自动创建”设置为“不自动创建”时,无此参数。 选择存储格式。 
 TEXTFILE使用明文存储,当数据存在特殊字符的场景下可能会导致数据写入错乱,请谨慎使用。建议优先使用ORC存储格式。  | 
     
       ORC  | 
    
| 
       hive表清理数据模式  | 
     
       “导入前清空数据”设置为“是”时,呈现此参数。 选择Hive表清理数据模式。 
  | 
     
       TRUNCATE  | 
    
| 
       分区信息  | 
     
       “导入前清空数据”设置为“是”时,呈现此参数。目的端为分区表时,必须指定分区。 
  | 
     
       单分区: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 LoadOverwrite的动态分区写入与静态分区写入介绍:
     
CDM Hive的LoadOverwrite方式依赖Hive原生语法'LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]',关于Hive语法可见Hive官网介绍。
写入过程将生成临时数据文件,并在写入完成后执行LOAD DATA OVERWRITE的SQL将临时数据文件写入目标表。
实践样例:
- 以源端为mysql的一个表,使用dt作为分区日期,其建表语句如下:
       
CREATE TABLE `demo` ( `id` varchar(10) DEFAULT NULL, `dt` date DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
 - 目的端为Hive的一个分区表,同样使用dt作为分区日期,其建表语句如下:
       
CREATE TABLE `demo` ( `id` varchar(10) ) PARTITIONED BY (`dt` date)
 - 数据写入。
       
对于期望写入单目标分区,即静态分区的场景,通过配置分区信息,将数据写入目标分区。
图1 配置分区信息
       对于源端有多个分区数据,期望写入多个目标分区,即动态分区的场景,不需要配置分区信息,通过在字段映射中选择要迁移的分区字段,将数据从源端的分区字段写入目的端对应的分区。图2 配置分区信息
        图3 选择要迁移的分区字段
         
 - 以源端为mysql的一个表,使用dt作为分区日期,其建表语句如下:
       
 - 源端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), timestmap_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;