日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

利用sqoop将hive数据导入导出数据到mysql

發布時間:2024/4/17 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用sqoop将hive数据导入导出数据到mysql 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://niuzhenxin.iteye.com/blog/1726414

運行環境? centos 5.6?? hadoop? hive
sqoop是讓hadoop技術支持的clouder公司開發的一個在關系數據庫和hdfs,hive之間數據導入導出的一個工具


在使用過程中可能遇到的問題:

  • sqoop依賴zookeeper,所以必須配置ZOOKEEPER_HOME到環境變量中。
  • sqoop-1.2.0-CDH3B4依賴hadoop-core-0.20.2-CDH3B4.jar,所以你需要下載hadoop-0.20.2-CDH3B4.tar.gz,解壓縮后將hadoop-0.20.2-CDH3B4/hadoop-core-0.20.2-CDH3B4.jar復制到sqoop-1.2.0-CDH3B4/lib中。

1? 首先安裝sqoop,如果你使用的是clouder分發版的話就非常簡單??
?? # yum install sqoop
? 如果用官方版本的話?
?? # cd /etc/yum.repos.d
?? # wget?http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo
?? # yum -y install sqoop
?? sqoop就會安裝完成
2? 使用sqoop
?? 首先將mysql-connector-java-5.1.16-bin.jar文件復制到/usr/lib/sqoop/lib文件夾下
???
3? 導入導出數據庫
?? 1)列出mysql數據庫中的所有數據庫命令
? #? sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456
???
?? 2)連接mysql并列出數據庫中的表命令
?? # sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username root --password 123456
?? 命令中的test為mysql數據庫中的test數據庫名稱? username password分別為mysql數據庫的用戶密碼
???
?? 3)將關系型數據的表結構復制到hive中
?sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table username --username root --password 123456 --hive-table test
其中 --table username為mysql中的數據庫test中的表?? --hive-table test 為hive中新建的表名稱
???
?? 4)從關系數據庫導入文件到hive中
sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password mysql-password --table t1 --hive-import

?? 5)將hive中的表數據導入到mysql中

./sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03

如果報錯
11/08/05 10:51:22 INFO mapred.JobClient: Running job: job_201108051007_0010??
11/08/05 10:51:23 INFO mapred.JobClient:? map 0% reduce 0%??
11/08/05 10:51:36 INFO mapred.JobClient: Task Id : attempt_201108051007_0010_m_000000_0, Status : FAILED?
java.util.NoSuchElementException??
??????? at java.util.AbstractList$Itr.next(AbstractList.java:350)??
??????? at uv_info.__loadFromFields(uv_info.java:194)??
??????? at uv_info.parse(uv_info.java:143)??
??????? at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:79)?
??????? at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:38)?
??????? at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)??
??????? at com.cloudera.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:187)?
??????? at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647)??
??????? at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)??
??????? at org.apache.hadoop.mapred.Child$4.run(Child.java:270)??
??????? at java.security.AccessController.doPrivileged(Native Method)??
??????? at javax.security.auth.Subject.doAs(Subject.java:396)??
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)?
??????? at org.apache.hadoop.mapred.Child.main(Child.java:264)??
此錯誤的原因為sqoop解析文件的字段與MySql數據庫的表的字段對應不上造成的。因此需要在執行的時候給sqoop增加參數,告訴sqoop文件的分隔符,使它能夠正確的解析文件字段。

hive默認的字段分隔符為'\001'
./sqoop export --connect jdbc:mysql://localhost:3306/datacenter --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03 --input-fields-terminated-by '\t'


與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的利用sqoop将hive数据导入导出数据到mysql的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。