sqoop的经典使用案例

创建一个文件放脚本文件(记住环境变量内进行配置)

RDBMS→hdfs:

rdbms-hdfs.sh

sqoop import \

--connect jdbc:mysql://slave02:3306/数据库 \

--username root \

--password 密码 \

--table 表 \

--target-dir 目标目录

还可以设置转移那些字段,map数。。。。。。

生成的MR就叫表的名字

RDBMS → HIVE

建hive表脚本

-- 创建hive表 use mydb;

-- 存在就删除 drop table if exists tb_emp;

-- 建表 CREATE TABLE tb_emp( id INT, name string, birthday date ) row format delimited fields terminated by ',';

rdbms→hive.sh

hive的数据是存储到hdfs上的,所以只需要将数据导入到相应的文件中就行

sqoop-import\ --connect jdbc:mysql://slave02:3306/sqoop\ --username root\ --password 88888888\ --table tb_emp\ --target-dir /user/hive/warehouse/mydb.db/tb_emp\ hive数据库对应的文件 -m 2\ 设置m数,默认为4 --delete-target-dir 多次执行

--fields-terminated-by ',' 指定分隔符可以不用指定,但是hive表必须要指定

添加可执行的权限

chmod +x *.sh

执行

./rdbms→hive.sh

导入源表的子集到目标目录

sqoop-import\ --connect jdbc:mysql://slave02:3306/sqoop\ --username root\ --password 88888888\ --table $1\ --target-dir $2\ -m $3\ --where "id>4"\ 条件导入 --delete-target-dir

增量导入

--incremental ,增量导入的模式,一般为:append --check-column, 根据哪个字段进行检测,一般是表(rdbms)的主键 --last-value , 从hdfs之上哪个列值开始进行检测,目前hdfs之上的数据已经到了多少条了

sqoop import \ --connect jdbc:mysql://NODE03:3306/sqoop \ --username root \ --password 88888888 \ --target-dir /sqoop/import/increment \ --table tb_employee \ -m 1 \ --incremental append \ --check-column id \ --last-value 5

sqoop job中封装了shell脚本(封装了导入或是导出的指令) 故,以后执行导入导出时,只需要执行相应的job即可。

删除 sqoop job --delete job名

创建全量导入时,创建job

sqoop job --create bap_code_category -- import \ --connect jdbc:mysql://NODE03:3306/elebap_bak \ --driver com.mysql.jdbc.Driver \ 驱动 --username root \ --password-file /sqoop/pwd/mysql.pwd \ 密码文件,密码直接放脚本内,不安全,文件放hdfs上 --table code_category \ --delete-target-dir \ --target-dir /elebap_bak/ods/ods_code_category \ --fields-terminated-by '\001' \ 指定分隔符

sqoop job -exec bap_code_category 执行自定义的job

创建增量导入时,job的

sqoop job --create bap_us_order -- import \

--connect jdbc:mysql://NODE03:3306/elebap_bak?dontTrackOpenResources=true&defaultFetchSize=1000&useCursorFetch=true \ 转义字符-每次提取多少条记录-使用游标提取多少条记录,不用打开dontTrackOpenResources轨迹,免得浪费资源 --driver com.mysql.jdbc.Driver \ --username root \ --password-file /sqoop/pwd/mysql.pwd \ --table us_order \ --target-dir /elebap_bak/ods_tmp/ods_us_order/ \ --fields-terminated-by '\001' \ --check-column order_id \ 检查主键 --incremental append \ 模式 --last-value 0 \ →初始时,写0,后面执行时, 会替换为真实的last-

sqoop job --list 查看有效job

后续更新hbase

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值