1 sqoop簡介
1.1 什么是sqoop藤违?
sqoop(發(fā)音:skup)是一款開源的工具,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(mysql影涉、oracle)間進(jìn)行數(shù)據(jù)的傳遞,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(例如 : MySQL ,Oracle ,Postgres等)中的數(shù)據(jù)導(dǎo)進(jìn)到Hadoop的HDFS中击困,也可以將HDFS的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫中荒叼。
Sqoop項(xiàng)目開始于2009年轿偎,最早是作為Hadoop的一個(gè)第三方模塊存在,后來為了讓使用者能夠快速部署甩挫,也為了讓開發(fā)人員能夠更快速的迭代開發(fā)贴硫,Sqoop獨(dú)立成為一個(gè)Apache項(xiàng)目椿每。
1.2 使用sqoop將oracle數(shù)據(jù)導(dǎo)入到hdfs中
- 首先在oracle選取要導(dǎo)入的表emp
注意:
如果報(bào)oracle driver找不到伊者,請講ojdbc14.jar拷貝至下面的目錄
/opt/cloudera/parcels/CDH-5.4.0-1.cdh5.4.0.p0.27/lib/sqoop/lib
- 將oracle中的emp表中的empno,ename,sal,deptno列導(dǎo)入到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'
參數(shù)解釋
--connect連接的oracle數(shù)據(jù)地址
-m 是mapreduce的數(shù)量
- 查看導(dǎo)出的效果
1.3 使用sqoop將oracle數(shù)據(jù)導(dǎo)入到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
參數(shù)解釋:
--table 指定oracle中的表名
--hive-table 指定hive中的表名
錯(cuò)誤:
解決方法:
--columns 參數(shù)中的列名必須大寫
導(dǎo)入成功
1.4 使用sqoop將hive數(shù)據(jù)導(dǎo)入到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 ' '
參數(shù)說明:
--table 指定oracle中的表名
--export-dir 指定數(shù)據(jù)源的絕對路徑,hdfs中
--columns hive中表的列名
--input-fields-terminated-by hive中表屬性分隔符
--input-lines-terminated-by hive中行分隔符
錯(cuò)誤:
解決辦法:
在oracle中創(chuàng)建表tbl_zhouan
查詢oracle可以發(fā)現(xiàn)數(shù)據(jù)已經(jīng)導(dǎo)出成功间护。
至此亦渗,hive和oracle數(shù)據(jù)轉(zhuǎn)換已經(jīng)成功完成!