Sqoop 能夠與Hive系統結合,實現數據的導入和導出,用戶須要在 sqoop-env.sh 中添加HIVE_HOME的環境變量。html
具體,見個人以下博客:mysql
前期工做jquery
本博文的主要內容有sql
1、將mysql表的數據導入到hive中apache
2、將Hive表的數據導出到mysql中(不創建中間表)app
3、將Hive表的數據導出到mysql中(創建中間表)(推薦)ide
1、將mysql表的數據導入到hive中
# 追加數據oop
sqoop import \ --connect jdbc:mysql://192.168.56.104:3306/test?useSSL=false \ --username root \ --password 123456 \ --table t1 --hive-import --hive-table test.mysql_t1 \
# 覆蓋數據post
sqoop import \ --connect jdbc:mysql://192.168.56.104:3306/test?useSSL=false \ --username root \ --password 123456 \ --table t1 \ --hive-import --hive-overwrite --hive-table test.mysql_t1 \
注:若是MySQL中的表沒有主鍵,則須要加--autoreset-to-one-mapper參數ui
完善
2、將Hive表的數據導出到mysql中(不創建中間表)
以下,是個人Hive裏的數據。
以/user/hive/warehouse/stock_partition/tradedate=20130722爲例。
這裏,Hive -> MySQL
我這裏是,
/user/hive/warehouse/stock_partition(在Hive裏)
->
stock_partition_copy(在MySQL裏)
對於,將Hive裏的數據,導出到MySQL(是須要先創建輸出表的。在我這裏是,stock_partition_copy)
代表,輸出表已經建立成功!
[hadoop@djt002 sqoopRunCreate]$ sqoop export \ > --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' \ > --username hive \ > --password-file /user/hadoop/.password \ > --table stock_partition_copy \ > --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 \ > -input-fields-terminated-by ","
或
[hadoop@djt002 sqoopRunCreate]$ sqoop export --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' --username hive --password-file /user/hadoop/.password --table stock_partition_copy --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 -input-fields-terminated-by ","
而後,到本地的MySQL,來看
成功!
3、將Hive表的數據導出到mysql中(創建中間表,有效解決髒數據)
對於Hive,相似與HDFS同樣,在從它們導出到本地的MySQL時,爲了規範適應生產業務所需,仍是也最好先導出到中間表。
以下,是個人Hive裏的數據
這裏,Hive -> 先導出到 中間表(成功才能夠,後續導出) -> MySQL
我這裏是,
/user/hive/warehouse/stock_partition(在Hive裏)
->
stock_partition _copy_tmp (在MySQL裏)
->
stock_partition_copy(在MySQL裏)
對於,將Hive裏的數據,導出到MySQL(是須要先創建中間表和輸出表的。在我這裏是,stock_partition_copy)
對於,這裏,由於,咱們只需複製舊錶的結構就好,無需它裏的數據,教你們快速獲得想要的新表。
CREATE TABLE stock_partition_copy_tmp SELECT * FROM stock_partition_copy WHERE 1=2;
代表,中間表和輸出表已經建立成功!
[hadoop@djt002 sqoopRunCreate]$ sqoop export \ > --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' \ > --username hive \ > --password-file /user/hadoop/.password \ > --table stock_partition_copy \ > --staging-table stock_partition_copy_tmp \ > --clear-staging-table \ > --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 \ > -input-fields-terminated-by ","
或者
[hadoop@djt002 sqoopRunCreate]$ sqoop export --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' --username hive --password-file /user/hadoop/.password --table stock_partition_copy --staging-table stock_partition_copy_tmp --clear-staging-table --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 -input-fields-terminated-by ","
而後,到本地的MySQL,來看
推薦博客
http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html (sqoop官網文檔)
http://blog.csdn.net/aaronhadoop/article/details/26713431