利用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'
相關推薦
利用sqoop將hive資料匯入Oracle中(踩的坑)
教程很多,這裡只說踩過的坑 1.下載sqoop時,還得下一個bin的包,拿到sqoop-1.4.6.jar 的包,放到hadoop的lib目錄下 2.匯入oracle,執行程式碼時,使用者名稱和表名必須大寫!且資料庫建表時表名必須大寫! 示例程式碼: sqoop expo
利用sqoop將hive資料匯入Oracle中
首先: 如oracle則執行sqoop list-databases --connect jdbc:oracle:thin:@//192.168.27.235:1521/ORCL --username DATACENTER -P 來測試是否能正確連線資料庫 如mysql則執行sq
利用sqoop將hive資料匯入匯出資料到mysql
執行環境 centos 5.6 hadoop hive sqoop是讓hadoop技術支援的clouder公司開發的一個在關係資料庫和hdfs,hive之間資料匯入匯出的一個工具 在使用過程中可能遇到的問題: sqoop依賴zookeeper,所以必須配置ZOOK
利用sqoop將hive和MySQL資料互匯入
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建表語句,應用sqoop將oracle中的表資料匯入到hive
ORACLE庫的操作首先選擇navicat作為這個檔案的工具,作為資料庫表結構的匯入和匯出工具。 匯出的時候 會連結構和資料都匯出來,會形成一個sql檔案 也可以只倒檢視或者表都可以的。但是以匯出的這個檔案匯入的時候
利用sqoop完成資料匯入匯出
一.安裝SQOOP後可使用如下命令列出mysql資料庫中的所有資料庫,與檢驗是否安裝成功。 # sqoop list-databases --connect jdbc:mysql://lo
利用Sqoop將MySQL海量測試資料匯入HDFS和HBase
宣告:作者原創,轉載註明出處。 一、安裝Sqoop 1、下載sqoop,解壓、資料夾重新命名 wget http://mirror.bit.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin_
利用pyhive將hive查詢資料匯入到mysql
在大資料工作中經常碰到需要將hive查詢資料匯入到mysql的需求,常見的方法主要有兩種,一是sqoop,另一種則是pyhive。本文主要講的就是python的pyhive庫的安裝與使用。 pyhive作用 遠端連線hive資料庫,執行hive sql,而
sqoop 將hive資料匯出mysql,map reduce卡住問題
直接上圖給初入坑的小夥伴看看問題的樣子檢視日誌沒有報錯,各種百度......最後對了一下mysql的表字段和hive的表字段才發現有一個欄位沒有對上。最後留下一篇記錄提醒一下入門的小白。當然,導致問題的原因有多種,只希望能提醒粗心的小白別忘記考慮到欄位的對應。
使用sqoop將hive資料匯入mysql例項
1.環境配置 CentOS6.5 hadoop2.2 jdk1.7.0 sqoop1.4.4 zookeeper3.4.5 Mysql 14.14 2.在mysql上建立表 先按照需求在
sqoop用法之mysql與hive資料匯入匯出
[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
利用Python將Excel表中的資料匯入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