使用sqoop我从teradata中提取数据并在hive中加载,在teradata中只有100行,但在hive中我看到2000行,加载了一些空值。当我研究这个问题时,我开始知道这个问题是因为表中的字符串列,它将通过添加--hive-drop-import-delims参数解决,但使用teradata和cloudera此参数具有兼容性问题。
实施例: 为了调试问题,我刚从源中提取了一行并加载到HDFS中。在下面你可以看到行被制作成两行并在hive中加载为两行。在teradata中,varchar(100)中的一列我认为它导致行分成两行。是否有任何方法可以成为单行。
输出数据:
111111,09999,2017-12-17,2014-01-15,2014-02-25,vivn,打开,51,RAJESH,
null,2014-03-19 14:18:36.000,2014-03-19 14:18:36.000,我
sqoop import --connect jdbc:teradata://xxxxxxx/DATABASE=bf_core,LOGMECH=LDAP,CHARSET=UTF8,TMODE=ANSI --username xxxx -password xxxxx --table MTR_tbl --where "mtr_id=1111111" --target-dir /data/history/MTR_XCL_LST9 --hive-import --hive-database dev_history --hive-table MTR_XCL_LST9 --split-by Mtr_Id --create-hive-table -m 1