sqoop配置使用

sqoop數據遷移工具
sqoop是apache一款Hadoop和關係數據庫服務器之間數據傳輸工具
導入數據:MySQL,Oracle導入數據庫到Hadoop的HDFS、HIVE、HBASE等數據存儲系統
導出數據:從Hadoop的文件系統中導出數據到關係數據庫
sqoop的原理其實就是將導出導入命令轉換成mapreduce程序來執行,sqoop在接收到命令後,都要生成mapreduce程序


sqoop安裝
安裝sqoop的前提必須具備java和hadoop的環境
1、修改配置文件 cd /usr/local/sqoop-1.4.6/conf
--mv sqoop-env-template.sh sqoop-env.sh
配置hadoop-common-home=hadoop的home變量
配置hadoop-mapred-home=hadoop的home變量
配置hive-home=hive的home變量
2、加入mysql的jdbc驅動包 進入sqoop的lib包下面上傳
mysql-connector-java-5.1.32.jar
3、啓動sqoop 進入sqoop的bin目錄下面
./sqoop-version
4、如果使用oracle或其他連接數據庫包,就需要使用其他驅動包放到lib下面

sqoop的導入數據(執行完成後會在該目錄下面生成java文件)
1、安裝sqoop的環境變量
2、使用命令(默認不能生成重複的文件)
sqoop import --connect jdbc:mysql://localhost:3306/庫名 --username root --password root --table 表名 --m 1


#通過id切割,並啓動2個maptask,必須指點切分數據(可以使用\的格式連接命令)
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--split-by id \
--table user --m 2


#將數據導入到指定的目錄下面
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--split-by id \
--target-dir /queryresult \
--table user --m 1


--sqoop import --connect jdbc:mysql://localhost:3306/kai --username root --password root --target-dir /queryresult --table user --m 1


#通過命令導入到hive表裏面
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--target-dir /queryresult \
--table user \
--hive-import --m 1


--sqoop import --connect jdbc:mysql://localhost:3306/kai --username root --password root --target-dir /queryresult --table user --hive-import --m 1


#通過命令導入到hive表裏面,但是沒指定hdf目錄
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--target-dir /queryresult \
--table user \
--hive-import --m 1


--sqoop import --connect jdbc:mysql://localhost:3306/kai --username root --password root --table user --hive-import --m 1


#通過命令導入到hive指定目錄下的表裏面(導入到hive裏面的時候都需要使用前綴建表 例如 t_user),使用這個命令把數據導入到hive中去但是會現在hdf生成一個零時目錄文件,導入完成後會刪除hdf文件
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--target-dir /queryresult \
--table user \
--hive-table user_t \
--hive-import --m 1


--sqoop import --connect jdbc:mysql://localhost:3306/kai --username root --password root --table user --hive-table t_user --hive-import --m 1


#根據 where 數據條件進行導入
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--where "字段條件='數據條件'" \
--table user \
--target-dir /queryresults \
--hive-table t_user_t \
--hive-import --m 1


#根據 query 根據需求導入,fields-terminated-by指明上傳到hdfs的目錄上每一列根據什麼條件分隔
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--target-dir /queryresults \
--query 'sql語句' \
--split-by id \
--fields-terminated-by '\t' \
--m 1


#incremental增量導入,check-column指明要檢查那一列,last-value表名上一列的值是1203(這個值是模糊查詢的)
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--table user --m 1 \
--target-dir /queryresults \
--incremental append \
--check-column id \
--last-value 1203


sqoop數據導出
將數據從hdfs導出到rebms數據庫中,導出錢,目標表必須存在於目標數據庫中
默認操作是將文件中的數據使用insert語句插入到表中
更新模式下,是生成update語句更新數據


sqoop export \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--table t_user \
--export-dir /user/root/user
--m 1 




sqoop提交作業(import前面必須要有空格)
sqoop job --create myjob \
-- import --connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--table t_user --m 1




--驗證作業作業
sqoop job --list


--查看作業(可以在裏面設置密碼)
sqoop job --show myjob


--執行作業
sqoop job --exec myjob


--刪除job
sqoop job --delect myjob


--生成java定製代碼
sqoop codegen \
--import --connect jdbc:mysql://localhost:3306/kai \
--username root \
--table t_user
發佈了51 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章