(MySQL裏的數據)經過Sqoop Import Hive 裏 和 經過Sqoop Export Hive 裏的數據到(MySQL)

 

  Sqoop 能夠與Hive系統結合,實現數據的導入和導出,用戶須要在 sqoop-env.sh 中添加HIVE_HOME的環境變量html

 

具體,見個人以下博客:mysql

      hadoop2.6.0(單節點)下Sqoop-1.4.6安裝與配置(數據讀取涉及hadoop、hbase和hive)

    hadoop2.2.0(單節點)下Sqoop-1.4.6安裝與配置(數據讀取涉及hadoop、hbase和hive)

 

   

 

  前期工做jquery

(MySQL裏的數據)經過Sqoop Import HDFS 裏 和 經過Sqoop Export HDFS 裏的數據到(MySQL)(五)

 

 

 

 

 

 

本博文的主要內容有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

相關文章
相關標籤/搜索