X 039 0203 039 mysql_2020年寒假假期总结0203
使用sqoop將hive中的統計數據導入到mysql中
思路:首先在hive上創建臨時表,然后將統計數據放在臨時表中,最后通過sqoop將臨時表中的數據導入到mysql中。
例子:將各個官方部門回答的數量都導入到mysql中。
1.在hive中創建capital_temp表
create table capital_temp(object string,
numint);
2.統計結果放入到臨時表當中
insert capital_tempselect object,count(1) as num from capital_info group by object
3.因為每個hive的表都在hdfs上有文件存儲,所以我們只需將hdfs上的數據導入到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中含有參數 導致–-username: 未找到命令的錯誤
解決方案:在jdbc的URL中如果含有&字符,會出現–-username: 未找到命令的錯誤的報錯信息,解決辦法:在&字符前添加\即可。
2.sqoop導入報錯Can't parse input data
解決方案:在sqoop命令中對于字符的分割形式出現了錯誤,我的數據分割符號是制表符“\t“,但是語句中寫的是“,”,所以出現了以下的錯誤,改成自己的分割符號就好
3.sqoop導出報錯Incorrect string value: '\xE5\xBC\xA0\xE6\x96\x87...'
解決方案:沒有給mysql的字段設置編碼,加上就好
alter table capital_temp change answerobject answerobject varchar(200) character set utf8;
4.sqoop導入數據之后查看數據,發現num沒有數值,而是一起去了第一列,基本上確認問題所在:分隔符的問題。
解決方案:所以只需要將分隔符修改就行。
將原本命令中的--fields-terminated-by '\t'改為--fields-terminated-by '\001'
總結
以上是生活随笔為你收集整理的X 039 0203 039 mysql_2020年寒假假期总结0203的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用dl元素编辑html个人信息,html
- 下一篇: hough变换直线检测_python+o