hive外部表資料匯入時多一條的問題

2021-09-22 19:43:40 字數 1099 閱讀 2853

匯入hive中的資料預設的列分隔符是'\001',預設的行分隔符是'\n'。如果匯入的資料中有'\n',hive會認為一行已經結束,後面的資料被分割成下一行。這種情況下,匯入之後hive中資料的行數就比原先資料庫中的多,而且會出現資料不一致的情況。

sqoop在匯入時可以指定分隔符和換行符,引數--fields-terminated-by和 --lines-terminated-by分別自定義行分隔符和列分隔符,雖然通過--lines-terminated-by指定了其他的字元作為行分隔符,但是不起作用,因為hive只支援'\n'作為行分隔符。簡單的解決辦法就是加上引數 --hive-drop-import-delims來把匯入資料中包含\n 分隔符去掉。

這樣一般情況就不會出問題了,但是我在實際操作過程中還是遇到了指定--hive-drop-import-delims這一引數後還是出現了多一行的問題。

問題描述:sqoop將mysql資料匯入到hive的外表,在匯入的過程中指定了各種引數,還是出現了多一條的問題,匯入語句

sqoop import "-dorg.apache.sqoop.splitter.allow_text_splitter=true" \

--hive-import \

--connect jdbc:mysql://localhost:3306/databasename?characterencoding=utf-8 \

--username **** \

--password ****\

--query "select * from tablename where \$conditions" \

--hive-import -m 3 \

--split-by id \

--hive-database hivedatabasename \

--hive-table hivetablename \

--target-dir /*/* \

--fields-terminated-by "\t" \

--hive-drop-import-delims \

--lines-terminated-by "\n" \

--delete-target-dir

hive建立外部表,匯入資料

在hdfs建立分割槽,並存有檔案 手工建立或者由程式在hdfs上生成了分割槽目錄,每個分割槽目錄下有相應的檔案。vi test.txt 2 lily 1991 shanghai 3 jack 1992 guangxi 4 jenny 1999 xinjiang 5 jay 1995 xizang 6...

Hive內部表與外部表,資料匯入,資料匯出

1,內部表資料由hive自身管理,外部表資料由hdfs管理 2,刪除內部表會直接刪除元資料 metadata 及儲存資料 刪除外部表僅僅會刪除元資料,hdfs上的檔案並不會被刪除 3,內部表資料儲存的位置是hive.metastore.warehouse.dir 預設 user hive wareh...

excel表匯入資料庫每次都少匯入一條問題的解決

今天用我寫的excel匯入資料庫程式進行匯入的時候突然發現,每次都少匯入一條,excel表是6條資料,可是資料庫中只有5條。反覆多次測試都是如此。以前沒這個情況啊。輸出匯入資料的總數,想從這裡發現問題。可是輸出是53,而不是6條,也不是5條。分析應該是中間excel表的資料被刪除過造成。又輸出exc...