X 039 0203 039 mysql_2020年寒假假期总结0203
使用sqoop將hive中的統(tǒng)計數(shù)據(jù)導(dǎo)入到mysql中
思路:首先在hive上創(chuàng)建臨時表,然后將統(tǒng)計數(shù)據(jù)放在臨時表中,最后通過sqoop將臨時表中的數(shù)據(jù)導(dǎo)入到mysql中。
例子:將各個官方部門回答的數(shù)量都導(dǎo)入到mysql中。
1.在hive中創(chuàng)建capital_temp表
create table capital_temp(object string,
numint);
2.統(tǒng)計結(jié)果放入到臨時表當(dāng)中
insert capital_tempselect object,count(1) as num from capital_info group by object
3.因為每個hive的表都在hdfs上有文件存儲,所以我們只需將hdfs上的數(shù)據(jù)導(dǎo)入到mysql上即可。
bin/sqoop export --connect \
jdbc:mysql://192.168.133.130:3306/holiday2020?useUnicode=true\&characterEncoding=utf-8 \
--username root --password heiyang123 --table capital_temp \--export-dir \/user/hive/warehouse/capital_temp/000000_0 --input-fields-terminated-by '\001'
注意點:
1.sqoop jdbc中含有參數(shù) 導(dǎo)致–-username: 未找到命令的錯誤
解決方案:在jdbc的URL中如果含有&字符,會出現(xiàn)–-username: 未找到命令的錯誤的報錯信息,解決辦法:在&字符前添加\即可。
2.sqoop導(dǎo)入報錯Can't parse input data
解決方案:在sqoop命令中對于字符的分割形式出現(xiàn)了錯誤,我的數(shù)據(jù)分割符號是制表符“\t“,但是語句中寫的是“,”,所以出現(xiàn)了以下的錯誤,改成自己的分割符號就好
3.sqoop導(dǎo)出報錯Incorrect string value: '\xE5\xBC\xA0\xE6\x96\x87...'
解決方案:沒有給mysql的字段設(shè)置編碼,加上就好
alter table capital_temp change answerobject answerobject varchar(200) character set utf8;
4.sqoop導(dǎo)入數(shù)據(jù)之后查看數(shù)據(jù),發(fā)現(xiàn)num沒有數(shù)值,而是一起去了第一列,基本上確認(rèn)問題所在:分隔符的問題。
解決方案:所以只需要將分隔符修改就行。
將原本命令中的--fields-terminated-by '\t'改為--fields-terminated-by '\001'
總結(jié)
以上是生活随笔為你收集整理的X 039 0203 039 mysql_2020年寒假假期总结0203的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用dl元素编辑html个人信息,html
- 下一篇: mysql root 不能登录_mysq