Hive學習筆記之-使用Sqoop把Oracle表導入Hive
安裝環境:
Hive: hive-0.11.0
Hadoop: Hadoop 1.2.1
Sqoop: sqoop-1.4.4.bin__hadoop-1.0.0
Oralce driver: ojdbc6.jar
軟件下載:
Hive:
Hadoop:
Sqoop:
Ojdbc:
操作步驟:
前提確保hadoop已經啟動
1. 安裝sqoop
--解壓
tar zvxf sqoop-1.4.4.bin__hadoop-1.0.0.tar.gz
cp -r sqoop-1.4.4.bin__hadoop-1.0.0/app/hadoop
chown -Rlicz:hadoop /app/hadoop/sqoop-1.4.4.bin__hadoop-1.0.0
2. 復制Oracle JDBC的驅動放到Sqoop的lib文件夾下
cp ojdbc6.jar/app/hadoop/sqoop-1.4.4.bin__hadoop-1.0.0/lib
3. 修改環境變量
[licz@nticket1~]$ vi .bash_profile
export HADOOP_HOME=/app/hadoop/hadoop-1.2.1
export JAVA_HOME=/usr/java/jdk1.6.0_18
export HIVE_HOME=/app/hadoop/hive-0.11.0
export SQOOP_HOME=/app/hadoop/sqoop-1.4.4.bin__hadoop-1.0.0
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$HADOOP_HOME/bin:$PIG_HOME/bin:$HIVE_HOME/bin:$SQOOP_HOME/bin
export PATH
4. 導入oracle數據
--導入方法
$ sqoop import--hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --username USERNAME --password PASSWORD --verbose -m 1 --table TABLENAME
說明:
DBNAME:數據庫實例名
USERNAME:用戶名
PASSWORD:密碼
TABLENAME:表名
-m:導入數據的進程的并發數,默認是4。如果導入的數據不大的話,不妨設置成1,這樣導入更快。一般來說Sqoop會使用主鍵來平均地分割數據。并發導入的時候可以設置相關的分割列等等,具體的做法參考官方的文檔。
官方文檔:
參數說明參考:
注意:
l 用戶名和表名必需是大寫的,除非它們在創建的時候是名字是放在引號中的大小寫混合的形式。
l Sqoop會把Oracle中的表自動在hive中創建,不用手工創建
--導入實例
sqoop import--hive-import --connect jdbc:oracle:thin:@172.16.80.115:1521:CUSTOMER2--username WEBMEMBER --password webmem123 --verbose -m 1 --table MEMBERS
5. 增量導入
另外一個問題,,如果我們要導入某個表中的新加入的部分,可以使用--check-column、--incremental、--last-value三個參數,--check-column指定要檢查的列,--incremental指定某種增加的模式,只有兩個合法的值,append 和lastmodified。如果--incremental為append,則Sqoop會導入--check-column指定的列的值大于--last-value所指定的值的記錄。如果--incremental為lastmodified,則Sqoop會導入--check-column指定的列的值(這是一個時間戳)近于--last-value所指定的時間戳的記錄。
例如下面的命令可以導入列ID的值大于4的所有記錄。
$ sqoop import--hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --usernameUSERNAME --password PASSWORD --verbose -m 1 --table TABLENAME --check-column ID--incremental append --last-value 4
遇到的問題:
1.導入hive時報錯
ERROR tool.ImportTool:Imported Failed: Attempted to generate class with no columns
原因和解決辦法:
是因導入時表名或用戶名沒有大寫所致
sqoop import --hive-import --connectjdbc:oracle:thin:@172.16.80.115:1521:CUSTOMER2 --username WEBMEMBER --passwordwebmem123 --verbose -m 1 --tablemembers
Sqoop 的詳細介紹:請點這里
Sqoop 的下載地址:請點這里
相關閱讀:
通過Sqoop實現Mysql / Oracle 與HDFS / Hbase互導數據
[Hadoop] Sqoop安裝過程詳解
用Sqoop進行MySQL和HDFS系統間的數據互導
Hadoop Oozie學習筆記 Oozie不支持Sqoop問題解決
Hadoop生態系統搭建(hadoop hive hbase zookeeper oozie Sqoop)
Hadoop學習全程記錄——使用Sqoop將MySQL中數據導入到Hive中
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com