sqoop之30分鐘搞定hive數據倉庫和oracle資料庫數據轉換

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

1 sqoop簡介

1.1 什麼是sqoop?

sqoop(發音:skup)是一款開源的工具,主要用於在Hadoop(Hive)與傳統的數據庫(mysql、oracle)間進行數據的傳遞,可以將一個關係型數據庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。

Sqoop項目開始於2009年,最早是作為Hadoop的一個第三方模塊存在,後來為了讓使用者能夠快速部署,也為了讓開發人員能夠更快速的迭代開發,Sqoop獨立成為一個Apache項目。

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

1.2 使用sqoop將oracle數據導入到hdfs中

1) 首先在oracle選取要導入的表emp

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

注意:

如果報oracle driver找不到,請講ojdbc14.jar拷貝至下面的目錄

/opt/cloudera/parcels/CDH-5.4.0-1.cdh5.4.0.p0.27/lib/sqoop/lib

2) 將oracle中的emp表中的empno,ename,sal,deptno列導入到hdfs中的/tmp/chenjian/qy73emp目錄下

sqoop import --connect jdbc:oracle:thin:@192.168.153.12:1521:orcl --username scott --password tiger --table emp --columns 'empno,ename,sal,deptno' -m 1 --target-dir '/tmp/chenjian/qy73emp'

參數解釋

--connect連接的oracle數據地址

-m 是mapreduce的數量

3) 查看導出的效果

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

1.3 使用sqoop將oracle數據導入到hive中

sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.153.12:1521:orcl --username scott --password tiger --table empbak -m 1 --columns 'EMPNO,ENAME,SAL' --hive-table qy73empxx

參數解釋:

--table 指定oracle中的表名

--hive-table 指定hive中的表名

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

錯誤:

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

解決方法:

--columns 參數中的列名必須大寫

導入成功

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

1.4 使用sqoop將hive數據導入到oracle中

sqoop export --table tbl_zhouan --connect jdbc:oracle:thin:@192.168.153.12:1521:orcl --username scott --password tiger --export-dir /user/hive/warehouse/qy73db.db/zhouan /zhouan.txt --columns eid,name,salary,destination --input-fields-terminated-by ' ' --input-lines-terminated-by '\n'

參數說明:

--table 指定oracle中的表名

--export-dir 指定數據源的絕對路徑,hdfs中

--columns hive中表的列名

--input-fields-terminated-by hive中表屬性分隔符

--input-lines-terminated-by hive中行分隔符

錯誤:

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

解決辦法:

在oracle中創建表tbl_zhouan

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

查詢oracle可以發現數據已經導出成功。

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換

至此,hive和oracle數據轉換已經成功完成,休息一下!

關山難越,誰悲失路之人?萍水相逢,盡是他鄉之客。

sqoop之30分鐘搞定hive數據倉庫和oracle數據庫數據轉換


分享到:


相關文章: