Mysql —> Hive
简单的数据导出
sqoop import \
--connect \
jdbc:mysql:localhost:3306/库名 \
--username \
root \
--password-file \
/tmp/.mysql_test_password \
--table \
member_cards \
--driver \
'com.mysql.jdbc.Driver' \
--hive-import \
--target-dir \
/warehouse/test.db/sqoop_ods_ud_member_card/ \
--hive-table \
test.sqoop_ods_ud_member_card \
--delete-target-dir
显示所有的数据库
sqoop list-databases \
--connect jdbc:mysql://localhost:3306 \
--username root \
--password root
//显示指定库中的所有表
sqoop list-tables \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password root
注意 :斜杠在命令行加,文档中可以省略。
导出指定时间区间的数据
1.where导出案例
#!/bin/bash
d1=$(date -d "$1" +%Y-%m-%d" "%H:%M:%S)
d2=$(date -d "$2" +%Y-%m-%d" "%H:%M:%S)
time=$(date -d "-1 day" +%Y-%m-%d)
sqoop import \
--connect \
jdbc:mysql://582959f06c18d.sh.cdb.myqcloud.com:3712/uniondrug_member \
--username \
root \
--password-file \
/tmp/.mysql_test_password \
--table \
member_cards \
--where \
"gmtCreated > '$d1' AND gmtCreated < '$d2'" \
--driver \
'com.mysql.jdbc.Driver' \
--hive-import \
--target-dir \
/warehouse/test.db/mem_cards/"$time"/ \
--hive-table \
test.\""$time"\" \
--delete-target-dir
2.query导出案例
#!/bin/bash
d1=$(date -d "$1" +%Y-%m-%d)
d2=$(date -d "$2" +%Y-%m-%d)
time=$(date -d "-1 day" +%Y-%m-%d)
sqoop import \
--connect \
jdbc:mysql://582959f06c18d.sh.cdb.myqcloud.com:3712/uniondrug_activity_dev \
--username \
root \
--password-file \
/tmp/.mysql_test_password \
--query \
"select id,product_id,product_name,date,max_quantity,used_quantity,left_quantity,partner_id from activity2_product_quantity where date > '$d1' AND date < '$d2' AND "\$CONDITIONS"" \
--split-by \
id \
--driver \
'com.mysql.jdbc.Driver' \
--hive-import \
--target-dir \
/warehouse/test.db/quantity/ \
--hive-table \
test.quantity \
--hive-drop-import-delims \
--delete-target-dir
使用query的注意事项
如果你想通过并行的方式导入结果,每个map task需要执行sql查询语句的副本,结果会根据sqoop推测的边界条件分区。query必须包含$CONDITIONS。这样每个scoop程序都会被替换为一个独立的条件。同时你必须指定–split-by.分区
增量导案例
job
-Dmapreduce.map.memory.mb=6000
-Dmapreduce.map.java.opts=-Xmx1600m
-Dmapreduce.task.io.sort.mb=4800
--create
import_mct_merchant_balance
--
import
--connect
jdbc:mysql://localhost:33060/test
--username
root
--password-file
/tmp/.mysql_oc_password
--table
balance
--driver
'com.mysql.jdbc.Driver'
--incremental
append
--check-column
updatedAt
--hive-import
--target-dir
/warehouse/uniondrug_ods.db/sqoop_buf_mct_merchant_balance/
--hive-table
uniondrug_ods.sqoop_buf_mct_merchant_balance
-m
6
--hive-drop-import-delims
export案例
导全量
sqoop export \
-Dmapreduce.map.memory.mb=6000 \
-Dmapreduce.map.java.opts=-Xmx1600m \
-Dmapreduce.task.io.sort.mb=4800 \
--connect \
jdbc:mysql://localhost:3306/test \
--username \
root \
--password \
root \
--table \
t_goods_guide_price_ed_01 \
--columns \
trade_code,price,city,province \
--hcatalog-database \
uniondrug_dm \
--hcatalog-table \
t_goods_guide_price_ed_01
导增量
sqoop export \
-Dmapreduce.map.memory.mb=6000 \
-Dmapreduce.map.java.opts=-Xmx1600m \
-Dmapreduce.task.io.sort.mb=4800 \
--connect \
jdbc:mysql://localhost:3712/test\
--username \
root \
--password \
root \
--table \
member_tag \
--columns \
member_id,last_work_merchant,consume_merchant_list_365 \
--update-key \
member_id \
--update-mode \
allowinsert \
--hcatalog-database \
uniondrug_dm \
--hcatalog-table \
t_mem_merchant_tag