Sqoop工具從hive導出數(shù)據(jù)到MySQL踩坑記

這兩天有一個需求如文章題目所示趟紊,要把之前從mysql數(shù)據(jù)庫導出到hive上的數(shù)據(jù)再反向操作導到mysql,具體用途就是生產(chǎn)mysql數(shù)據(jù)庫會備份到hive档泽,然后想通過hive把生產(chǎn)數(shù)據(jù)導入到測試環(huán)境匆篓。

sqoop我就不具體介紹了,直接上命令

sqoop export \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://10.2.123.115:3306/local4gome?characterEncoding=UTF-8 \
--table t_replenishment \
--username root \
--password 'esns' \
--fields-terminated-by '\0002' \
--export-dir /stage/supplycenter/gyl/t_replenishment_cb_biz/20190516

其他的沒啥好說的,不懂的可以google凤藏。這里主要分享一個坑:

ERROR tool.ExportTool: Error during export: 
Export job failed! 
at org.apache.sqoop.mapreduce.ExportJobBase.runExport(ExportJobBase.java:439) 
at org.apache.sqoop.manager.SqlManager.exportTable(SqlManager.java:931) 
at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:80) 
at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:99) 
at org.apache.sqoop.Sqoop.run(Sqoop.java:147) 
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243) 
at org.apache.sqoop.Sqoop.main(Sqoop.java:252) 

從命令行執(zhí)行輸出日志根本看不出具體的原因奸忽,這個時候需要首先到hadoop任務平臺查看任務詳細日志


image.png
Caused by: java.lang.RuntimeException: Can't parse input data: '1??201903?2??R17?相機??00383?尼康???xietianxu?2019-03-21 16:53:43???liangchen?2019-03-21 17:23:08????1??SY00, QD00??????1?COMPLETED?SUB_ORG?3C事業(yè)部?3C事業(yè)部?'
    at t_buying_process.__loadFromFields(t_buying_process.java:2030)
    at t_buying_process.parse(t_buying_process.java:1668)
    at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89)
    ... 10 more
Caused by: java.lang.NumberFormatException: For input string: "1??201903?2??R17?相機??00383?尼康???xietianxu?2019-03-21 16:53:43???liangchen?2019-03-21 17:23:08????1??SY00, QD00??????1?COMPLETED?SUB_ORG?3C事業(yè)部?3C事業(yè)部?"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.valueOf(Integer.java:766)
    at t_buying_process.__loadFromFields(t_buying_process.java:1721)

從java.lang.NumberFormatException: For input string這句異扯槲保可以看出是分割字段錯誤,將很多字段識別成了一個字段栗菜,以至解析第一個int類型的id字段報錯欠雌。

這個時候我們需要確定hive存在hdfs文件中的每行的字段分隔符到底是什么。

一開始使用了一個錯誤的方法疙筹,得到了錯誤的分隔符:^I(通過查ASCII碼得其是9富俄,八進制0011)

hive -e "select * from stage.t_buying_process_cb_biz limit 10" >> res
image.png

于是我在命令中使用

--fields-terminated-by '\0011'  #八進制,9而咆,即^I

當然霍比,不出所料,失敗了暴备。我還使用過tab分隔符

--fields-terminated-by '\t' 

最后悠瞬,我把hdfs上的hive文件下載了下來,最終發(fā)現(xiàn)分隔符是^B(ASCII碼是8涯捻,八進制002)

hadoop fs -get /stage/supplycenter/supply_cp/t_buying_process_cb_biz/20190516 .
image.png

于是把腳本中指定的分隔符換成了^B浅妆,最終終于成功了!結論就是一定要下載文件確定真正的字段分隔符障癌!

--fields-terminated-by '\0002' \

哈哈凌外,發(fā)現(xiàn)也可以以在線的方式查看hive文件分隔符

# 因為我這里hive存儲使用了bz2的方式壓縮,所以使用管道bzip2 -d進行了解壓縮
hadoop fs -cat /stage/supplycenter/gyl/t_replenishment_cb_biz/20190519/dbc__13b3ae19_5ee4_4e1e_8038_b4f186292d68.bz2 | bzip2 -d | head -n 10 | cat -A

從輸出可以看到涛浙,分隔符依然是^B

225483485^B^BGMZB^BR23^B00112^B000000000100019581^B0^B1^B^B0.000^B^B0^B0.000^B^B^B0.000^B0.000^B0.000^B8^B4^B0.000^B0^B0^B2019-05-09 11:17:43^B1^B0001^B$
225483486^B^BGMZB^BR23^B00112^B000000000100019581^B0^B2^B0.000^B0.000^B^B0^B0.000^B^B^B0.000^B0.000^B0.000^B8^B4^B0.000^B0^B0^B2019-05-09 11:17:43^B1^B0002^B$
225483487^B^BGMZB^BR23^B00112^B000000000100019581^B0^B2^B^B0.000^B^B0^B0.000^B^B^B0.000^B0.000^B0.000^B8^B4^B0.000^B0^B1^B2019-05-09 11:17:43^B1^B0002^B$
225483488^B^BGMZB^BR23^B00112^B000000000100019581^B1^B1^B^B0.000^B^B0^B0.000^B^B^B1.011^B0.000^B0.000^B8^B4^B0.000^B0^B1^B2019-05-09 11:17:43^B1^B0001^B$
225483489^B^BGMZB^BR23^B00112^B000000000100019581^B1^B2^B^B0.000^B^B0^B0.000^B^B^B4.187^B0.000^B0.000^B8^B4^B0.000^B0^B0^B2019-05-09 11:17:43^B1^B0001^B$
225483490^B^BGMZB^BR23^B00112^B000000000100019581^B1^B2^B^B0.000^B^B0^B0.000^B^B^B0.000^B0.000^B0.000^B8^B4^B0.000^B0^B1^B2019-05-09 11:17:43^B1^B0001^B$
225483491^B^BGMZB^BR23^B00112^B000000000100019581^B1^B2^B0.000^B0.000^B^B0^B2.167^B6.000^B3^B0.293^B18.000^B10.000^B8^B4^B0.000^B0^B0^B2019-05-09 11:17:43^B1^B0002^B$
225483492^B^BGMZB^BR19^B00080^B000000000100025235^B0^B1^B^B0.000^B^B0^B0.000^B^B^B0.000^B0.000^B0.000^B8^B1^B0.000^B0^B0^B2019-05-09 11:17:43^B1^B0001^B$
225483493^B^BGMZB^BR19^B00080^B000000000100025235^B0^B1^B^B0.000^B^B0^B0.000^B^B^B0.000^B0.000^B0.000^B8^B1^B0.000^B0^B1^B2019-05-09 11:17:43^B1^B0002^B$
225483494^B^BGMZB^BR19^B00080^B000000000100025235^B0^B2^B^B0.000^B^B0^B0.000^B^B^B0.000^B0.000^B0.000^B8^B1^B0.000^B0^B0^B2019-05-09 11:17:43^B1^B0001^B$

補充:很遺憾康辑,sqoop export不支持query以及where參數(shù),import倒是支持蝗拿。

以下參數(shù)命令將空串''轉(zhuǎn)換為NULL存到數(shù)據(jù)庫

--input-null-string '' 
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晾捏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子哀托,更是在濱河造成了極大的恐慌惦辛,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仓手,死亡現(xiàn)場離奇詭異胖齐,居然都是意外死亡,警方通過查閱死者的電腦和手機嗽冒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門呀伙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人添坊,你說我怎么就攤上這事剿另。” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵雨女,是天一觀的道長谚攒。 經(jīng)常有香客問我,道長氛堕,這世上最難降的妖魔是什么馏臭? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮讼稚,結果婚禮上括儒,老公的妹妹穿的比我還像新娘。我一直安慰自己锐想,他們只是感情好帮寻,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痛倚,像睡著了一般规婆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蝉稳,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天抒蚜,我揣著相機與錄音,去河邊找鬼耘戚。 笑死嗡髓,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的收津。 我是一名探鬼主播饿这,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼撞秋!你這毒婦竟也來了长捧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吻贿,失蹤者是張志新(化名)和其女友劉穎串结,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舅列,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡肌割,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了帐要。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片把敞。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖榨惠,靈堂內(nèi)的尸體忽然破棺而出奋早,到底是詐尸還是另有隱情盛霎,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布耽装,位于F島的核電站摩渺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏剂邮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一横侦、第九天 我趴在偏房一處隱蔽的房頂上張望挥萌。 院中可真熱鬧,春花似錦枉侧、人聲如沸引瀑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憨栽。三九已至,卻和暖如春翼虫,著一層夾襖步出監(jiān)牢的瞬間屑柔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工珍剑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掸宛,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓招拙,卻偏偏與公主長得像唧瘾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子别凤,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容