1 sqoop簡介
1.1 什麼是sqoop?
sqoop(發音:skup)是一款開源的工具,主要用於在Hadoop(Hive)與傳統的數據庫(mysql、oracle)間進行數據的傳遞,可以將一個關係型數據庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。
Sqoop項目開始於2009年,最早是作為Hadoop的一個第三方模塊存在,後來為了讓使用者能夠快速部署,也為了讓開發人員能夠更快速的迭代開發,Sqoop獨立成為一個Apache項目。
1.2 使用sqoop將oracle數據導入到hdfs中
1) 首先在oracle選取要導入的表emp
注意:
如果報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) 查看導出的效果
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中的表名
錯誤:
解決方法:
--columns 參數中的列名必須大寫
導入成功
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中行分隔符
錯誤:
解決辦法:
在oracle中創建表tbl_zhouan
查詢oracle可以發現數據已經導出成功。
至此,hive和oracle數據轉換已經成功完成,休息一下!
關山難越,誰悲失路之人?萍水相逢,盡是他鄉之客。
閱讀更多 HelloTeacher陳 的文章