sqoop安裝及使用(淺談)

本人vm上裝的hadoop是2.7.7,hive是2.3.4 所以在此用的sqoop是 sqoop1.4.7_hadoop-2.6.0版本
1.解壓安裝包 , 解壓命令: tar -xzvf sqoop-1.4.7.bin__hadoop-2.6.0.gz.tar
2.配置環境變量 , 命令: vi ~/.bashrc(此處是CentOS7)
加入參數
export SQOOP_HOME=/usr/local/java/sqoop-1.4.7.bin__hadoop-2.6.0
export PATH=$PATH:$SQOOP_HOME/bin
3.把mysql驅動包拷貝導 $SQOOP_HOME/lib下
如果$SQOOP_HOME/lib/下沒有hive-common-2.3.4.jar包得話還需要把$HIVE_HOME/lib/路徑下得此包拷貝到這個路徑裏

  1. 重命名 $SQOOP_HOME/conf/sqoop-env-template.sh
    命令: scp sqoop-env-template.sh sqoop-env.sh
    在sqoop-env.sh文件裏可以配置hadoop,hive等的環境路徑,由於我本機在bashrc中配置了此處我就沒有配置

注意:
從hive導數據到mysql得時候要啓動yarn得mr-jobhistory-daemon.sh日誌服務,可以查看jobhistory
Hadoop,yarn-site.xml文件添加
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop3:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop3:19888</value>
</property>

測試命令: sqoop -version
Sqoop list-databases -connection jdbc:mysql://hadoop1:3306/ -username root -password root
sqoop安裝及使用(淺談)

到此處sqoop已經安裝成功完成。下面編寫文件開始測試導入數據
在mysql中建一個company數據庫,數據庫裏建staff表,表有三個字段(id,name,sex其中id是自增主鍵)

  1. 從mysql往hdfs中導入全部數據,此處是用文件形式
    bin/sqoop import \ ---導入導出方式
    --connect jdbc:mysql://hadoop1:3306/company \ ---本地mysql的jdbc地址
    --username root \ ---mysql的用戶名
    --password root \ ---mysql的密碼
    --table staff \ ---mysql中表名
    --target-dir /sqoop/company \ ---導入時hdfs的臨時文件路徑
    --delete-target-dir \ ---導入完成後刪除臨時文件
    --num-mappers 1 \ ---導入時mappers數量
    --fields-terminated-by “|” ---導入hdfs時的分隔符

2.從mysql往hdfs中導入查詢出來的數據
bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/company \
--username root \
--password root \
--target-dir /sqoop/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by “|” \
--query ‘select name,sex from staff where id <=1 and $CONDITIONS;’
注意此處:$CONDITIONS 用查詢語句後面必須加$CONDITIONS

3.從mysql 中往hdfs裏導入 固定列的數據
bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/company \
--username root \
--password root \
--target-dir /sqoop/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by “|” \
--columns id,sex \
--table staff

4.從mysql中往hdfs裏導入篩選的數據
bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/company \
--username root \
--password root \
--target-dir /sqoop/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by “|” \
--table staff \
--where “id=1”

5.從mysql中導入數據到hive中
bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/company \
--username root \
--password root \
--table staff \
--num-mappers 1 \
--hive-import \
--fields-terminated-by “|” \
--hive-overwrite \
--hive-table staff_hive

6.從hive中導出數據到mysql中,下面配置保存在toMysql文件裏
bin/sqoop export \
--connect jdbc:mysql://hadoop1:3306/company \
--username root \
--password root \
--num-mappers 1 \
--columns id,name,sex \
--export-dir /user/hive/warehouse/staff_hive \
--table staff \
--input-fields-terminated-by |

執行文件命令: sqoop --options-file toMysql

6.hive分區表導入到mysql中(注意此處用的hive中的其他表,沒有用對應mysql中的staff表)
export
--connect
jdbc:mysql://hadoop1:3306/zytest
--username
root
--password
root
-m
1
#--columns
#id,channel_id,class_code,handle_phone,business_id,business_name,reward,business_handle_time,month
--export-dir
/user/hive/warehouse/zytest.db/ywcj_total_reward_detail_test/month=201808
--table
ywcj_total_reward_detail_test1
--input-fields-terminated-by
|
--input-null-string
\N
--input-null-non-string
\N
--update-key
id
--update-mode
allowinsert
--hive-partition-key
month
--hive-partition-value
201808

7.從mysql導入到hbase中
bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/company \
--username root \
--password root \
--table staff \
--columns “id,name,sex” \
--columns-family “info” \
--hbase-create-table \
--hbase-row-key “id” \
--hbase-table “hbase_company” \
--num-mappers 1 \
--split-by id

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章