一、從rdbms導入到hdfs中
1、一 import(從rdbms導入到hdfs中)
可選參數
默認使用as-textfile文件格式,行與行之間使用逗號分割
--as-parquetfile ?使用partition文件格式保存
--columns id,name 導入指定的列
--compress 啟用壓縮
--compression-codec org.apache.hadoop.io.compress.SnappyCodec 壓縮格式
壓縮后的文件如果直接加載到hive,可以正常運行(生產環境中用hive來分析mysql的數據
--delete-target-dir 刪除已經存在的目標目錄
--fields-terminated-by '\t' 設置分割符
--direct mysql優化,快速導入,
2、查看mysql中-的database:
sqoop list-databases \
--connect jdbc:mysql://localhost:3306 \
--username root \
--password ***** \
3、將mysql中表的數據導入到hdfs
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--table users \
--target-dir /user/sqoop/mysql/users \
--num-mappers 1
4、使用sql語句將數據導入hdfs
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--query 'select id,name from users where $CONDITIONS'\
--target-dir /user/sqoop/mysql/users_query \
--num-mappers 1
5、使用sql語句將數據導入hdfs——增量導入
有一個唯一的標識符,類似于插入時間createtime,使用where來進行區分
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--query 'select id,name from users where $CONDITIONS'\
--target-dir /user/sqoop/mysql/users_query \
--num-mappers 1 \
--incremental append \增量倒入
--check-column id \ 標識符列
--last-value 4 \上一次的最后一個 插入位置
二、export導出(文件或者hive到mysql中)
1、將hdfs文件導入mysql
sqoop export \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--table users \
--export-dir /user/sqoop/hdfs/users_mysql.txt \
--num-mappers 1 \
2、從mysql直接導數據到hive中
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--table users \
--delete-target-dir \
--fields-terminated-by ',' \
--num-mappers 1 \
--hive-import \
--hive-database default \
--hive-table users2
原理與之前一樣,中間還是會先將數據寫道hdfs上邊
3、從hive中導出數據到mysql中
sqoop export \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password ***** \
--table users2 \
--export-dir /user/sqoop/hdfs/mysql \
--num-mappers 1 \
--input-fields-terminated-by ','
4、option-file使用:相當于執行腳本
執行語句:sqoop --options-file /文件位置
腳本內容:(空格變換行)
sqoop export ??
#這里寫注釋
--connect?jdbc:mysql://localhost:3306/test
--username?root
--password?*****
--table?users2
--export-dir?/user/sqoop/hdfs/mysql
--num-mappers?1
--input-fields-terminated-by ','