1. 程式人生 > >工作中,sqoop匯入匯出hive,mysql 出現的問題.

工作中,sqoop匯入匯出hive,mysql 出現的問題.

1.從mysql匯入到Hive 出現數據帶入錯誤:當欄位中存在輸入tab鍵,會被hive識別多建立一條欄位。

解決:sqoop import 語句中 新增  --hive-drop-import-delims 來把匯入資料中包含的hive預設的分隔符去掉。

2.出現PRIMARY主鍵錯誤:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'

解決:目標表中資料沒有清除,清除後倒入成功(表的主鍵)

3.com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'rep_status' at row 1

解決:源資料為空,匯入到Hive為NULL( string)字串,目標mysql 欄位長度為varchar(2)長度不夠,報錯。加入  --null-string "\\N" --null-non-string "\\N"

4.java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]

解決:時間格式在資料集市中為String,匯入到堡壘機中會自動轉換成對應時間格式。或者匯入hive時指定匯入時間格式。--map-column-java passtime=java.sql.Timestamp

5.將Hive中資料匯入到Oracle中注意:Sqoop匯出語句要注意 目標 Table 名 要為大寫。Oracle中表名有大小寫區分。