1. 程式人生 > >利用sqoop將hive資料匯入匯出資料到mysql

利用sqoop將hive資料匯入匯出資料到mysql

執行環境  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'

相關推薦

利用sqoophive資料匯入Oracle中(踩的坑)

教程很多,這裡只說踩過的坑 1.下載sqoop時,還得下一個bin的包,拿到sqoop-1.4.6.jar 的包,放到hadoop的lib目錄下 2.匯入oracle,執行程式碼時,使用者名稱和表名必須大寫!且資料庫建表時表名必須大寫!  示例程式碼: sqoop expo

利用sqoophive資料匯入Oracle中

首先: 如oracle則執行sqoop list-databases --connect jdbc:oracle:thin:@//192.168.27.235:1521/ORCL --username DATACENTER -P 來測試是否能正確連線資料庫  如mysql則執行sq

利用sqoophive資料匯入匯出資料到mysql

執行環境  centos 5.6   hadoop  hive sqoop是讓hadoop技術支援的clouder公司開發的一個在關係資料庫和hdfs,hive之間資料匯入匯出的一個工具 在使用過程中可能遇到的問題: sqoop依賴zookeeper,所以必須配置ZOOK

利用sqoophiveMySQL資料匯入

1.    hadoop、hive、MySQL安裝(略)啟動hadoop 執行start-all.sh start-dfs.sh start-yarn.sh 2.    下載sqoop 3.    解壓 #tar -zxvfsqoop-1.4.6.bin__hadoop-

hive匯入匯出資料的命令彙總

一.匯入資料 從本地檔案匯入資料到 hive表: LOAD DATA LOCAL INPATH '本地檔案路徑' INTO TABLE 表名稱 PARTITION(分割槽欄位名='分割槽值');   表要提前建

Sqoop之java API匯入匯出資料

折騰了一下午終於成功了,這裡做一下總結 專案依賴: <dependency> <groupId>org.apache.sqoop</groupId> <artifactId>sqoop-client</arti

使用Sqoop資料從RDBMS(關係型資料庫) 到hdfs和Hive匯入匯出

一、RDBMS 到 HDFS/HIVE 1.首先啟動Mysql service mysql start 2.在mysql中新建一張表並插入資料 # mysql -uroot -proot mysql> create table dept(id int pri

從Navicat匯出oracle建表語句,應用sqooporacle中的表資料匯入hive

                            ORACLE庫的操作首先選擇navicat作為這個檔案的工具,作為資料庫表結構的匯入和匯出工具。  匯出的時候 會連結構和資料都匯出來,會形成一個sql檔案  也可以只倒檢視或者表都可以的。但是以匯出的這個檔案匯入的時候

利用sqoop完成資料匯入匯出

一.安裝SQOOP後可使用如下命令列出mysql資料庫中的所有資料庫,與檢驗是否安裝成功。      #  sqoop list-databases --connect jdbc:mysql://lo

利用SqoopMySQL海量測試資料匯入HDFS和HBase

宣告:作者原創,轉載註明出處。 一、安裝Sqoop 1、下載sqoop,解壓、資料夾重新命名 wget http://mirror.bit.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin_

利用pyhivehive查詢資料匯入mysql

在大資料工作中經常碰到需要將hive查詢資料匯入到mysql的需求,常見的方法主要有兩種,一是sqoop,另一種則是pyhive。本文主要講的就是python的pyhive庫的安裝與使用。 pyhive作用 遠端連線hive資料庫,執行hive sql,而

sqoop hive資料匯出mysql,map reduce卡住問題

直接上圖給初入坑的小夥伴看看問題的樣子檢視日誌沒有報錯,各種百度......最後對了一下mysql的表字段和hive的表字段才發現有一個欄位沒有對上。最後留下一篇記錄提醒一下入門的小白。當然,導致問題的原因有多種,只希望能提醒粗心的小白別忘記考慮到欄位的對應。

使用sqoophive資料匯入mysql例項

1.環境配置 CentOS6.5 hadoop2.2 jdk1.7.0 sqoop1.4.4 zookeeper3.4.5 Mysql 14.14 2.在mysql上建立表 先按照需求在

sqoop用法之mysqlhive資料匯入匯出

[TOC] ## 一. Sqoop介紹 `Sqoop`是一個用來將`Hadoop`和關係型資料庫中的資料相互轉移的工具,可以將一個關係型資料庫(例如:`MySQL、Oracle、Postgres`等)中的資料導進到`Hadoop`的`HDFS`中,也可以將`HDFS`的資料導進到關係型資料庫中。對於某些`N

使用POI資料匯入匯出資料庫。

POI將資料匯入匯出資料庫。(採用ssm框架) 1.前臺列表的展示 <script type="text/javascript"> //進行資料的全選 function selectAll(){ var ids=document.get

Hive命令之三:hive資料匯入匯出

Hive 資料的匯入匯出: 一 Hive資料匯出   1、匯出資料到本地檔案系統:      insert overwrite local directory '/software/data/data1' select * f

利用PythonExcel表中的資料匯入Mysql資料庫

 python操作Excel 需要匯入xlrd包,可以通過pip install xlrd 一鍵安裝。 #coding=utf-8 ''' python 將指定目錄下的excel檔案匯入到資料庫中 ''' # 引入資料庫包 import pymysql # 引入操作excel包

Oracle利用exp和imp,資料泵impdp和expdp匯入匯出資料,spool匯出資料

Oracle利用exp和imp,資料泵impdp和expdp匯入匯出資料,spool匯出資料 注意: (1)imp只能匯入exp匯出的檔案 ,imp,exp是客戶端程式,操作少量資料  (2)impdp只能匯入expdp匯出的檔案,impdp,expdp是伺服器端程式,操作適量大的

Hive DML(資料匯入匯出)

DML DML:Data Manipulation Language(資料管理語言) 載入資料到表 語法 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (part

Hive資料匯入匯出的不同方式和自定義列分隔符

資料來源: hive> select * from test1; OK Tom 24.0 NanJing Nanjing University Jack