我正在使用Sqoop导入将数据从RDBMS(oracle)加载到Hive。如果没有 --map-column-hive 选项,数据加载没有任何问题,但数据类型与预期不同。这是源代码--map-column-hive 'ae_header_id=bigint,application_id=smallint,entity_id=bigint,event_id=bigint,accounting_date=date,gl_transfer_date=timestamp' \
源表和目标表具有相同的列名。
Sqoop 版本 1.4.6 和 Hive 2.1
我按如下方式更改了脚本并且工作正常。
--query 'SELECT AE_HEADER_ID ,
APPLICATION_ID ,
ENTITY_ID ,
EVENT_ID ,
EVENT_TYPE_CODE ,
ACCOUNTING_DATE ,
GL_TRANSFER_STATUS_CODE ,
GL_TRANSFER_DATE
FROM XXCFI_XLA_AE_HEAD_TEST where $CONDITIONS' --split-by ae_header_id --m 1
--hive-import
--hive-database xxcfi
--hive-table XXCFI_XLA_AE_HEAD_PQ
--map-column-hive AE_HEADER_ID=BIGINT,APPLICATION_ID=SMALLINT,ENTITY_ID=BIGINT,EVENT_ID=BIGINT,ACCOUNTING_DATE=TIMESTAMP,GL_TRANSFER_DATE=TIMESTAMP
检查源端的列名,因为 Sqoop 认为它们区分大小写,并相应地更改它们的名称。