一、Sqoop的簡介:
Sqoop是一個數據采集引擎/數據交換引擎,采集關系型數據庫(RDBMS)中的數據,主要用於在RDBMS與HDFS/Hive/HBase之間進行數據傳遞,可以通過sqoop import命令將RDBMS中的數據導入到HDFS/Hive/HBase中,也可以通過sqoop export命令將HDFS/Hive/HBase中的數據導入到RDBMS中,特點:批量采集數據,底層依賴於MapReduce程序,工作原理:通過JDBC連接到關系型數據庫(RDBMS)。
二、Sqoop的實驗條件:
實驗條件:安裝Windows XP操作系統和oracle數據庫。
為什么要選擇關系型數據庫中的oracle數據庫呢?
原因:1、在windows系統上安裝oracle數據庫比在linux系統上更簡單。2、oracle數據庫中的SH用戶含有sales訂單表,表中包含92萬條記錄,SCOTT用戶含有現成的員工表emp.csv和部門表dept.csv。
三、各種數據庫對應的驅動類名和URL格式:
數據庫 驅動類名 URL格式 端口號
oracle oracle.jdbc.OracleDriver jdbc:oracle:thin:@IP:1521:orcl 1521
mysql com.mysql.jdbc.Driver jdbc:mysql://IP:3306/dbname?name=value 3306
hive org.apache.hive.jdbc.HiveDriver jdbc:hive2://IP:10000/dbname 10000
四、安裝和配置Sqoop:
注:不需要修改配置文件
1、安裝sqoop:tar -zxvf sqoop-1.4.5bin_hadoop-0.23.tar.gz -C ~/training
2、配置SQOOP_HOME環境變量:
export SQOOP_HOME=/root/training/sqoop-1.4.5bin_hadoop-0.23
export PATH=$SQOOP_HOME/bin:$PATH
五、使用sqoop語句采集RDBMS中的數據:
1、導入員工表EMP中的所有數據:
sqoop import --connect jdbc:oracle:thin:@192.168.182.157:1521:orcl --username SCOTT --password tiger --table EMP --target-dir /sqoop/import/emp1
2、導入員工表EMP中的指定列:
sqoop import --connect jdbc:oracle:thin:@192.168.182.157:1521:orcl --usrname SCOTT --password tiger --table EMP -column ENAME,SAL --target-dir /sqoop/import/emp2
3、導入SALES表中的所有數據:
sqoop import --connect jdbc:oracle:thin:@192.168.182.157:1521:orcl --username SH --password sh --table SALES --target-dir /sqoop/import/sales -m 1
4、導入SCOTT用戶下的所有表到HDFS中:
sqoop import-all-tables --connect jdbc:oracle:thin:@192.168.182.157:1521:orcl --usernmae SCOTT --password tiger
5、導出HDFS中的數據到RDBMS中:
sqoop export --connect jdbc:oracle:thin:@192.168.182.157:1521:orcl --username SCOTT --password tiger --table STUDENTS --export-dir /students
六、oracle數據庫與mysql數據庫的區別:
1、oracle數據庫區分大小寫,需要大寫的有:用戶名、表名、列名,mysql數據庫不區分大小寫。
2、oracle數據庫只有一個數據庫:orcl,在安裝oracle數據庫時自動創建,mysql數據庫有很多數據庫。
3、oracle數據庫有很多用戶,表屬於用戶,mysql數據庫有很多數據庫,表屬於數據庫,數據庫對不同用戶設置了不同的訪問權限。
七、Sqoop與Flume的相同與不同:
相同:sqoop和flume都是數據采集引擎。
不同:sqoop的特點:批量采集數據,flume的特點:實時采集數據,主要用於實時采集系統中。
作者:李金澤AllenLi,清華大學碩士研究生,研究方向:大數據和人工智能。