sqoop数据迁移案例

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值