Sqoop--Job与脚本

1、Sqoop Job

  • 问题:在增量导入时,是不是每次都要手动更改上一次的值?
  • 测试:
bin/sqoop import \
--connect jdbc:mysql://node-03:3306/sqoop \
--username root \
--password 123456 \
--table tb_tohdfs \
--target-dir /sqoop/import/test04 \
--fields-terminated-by '\t' \
--incremental append \
--check-column id \
--last-value 4 \
-m 1
  • 解决:官方建议,你将增量导入的程序,封装为Sqoop Job
    • 每次不用执行非常长的代码
    • 每次不用手动修改lastvalue,sqoop job会自动记录
  • 实现
  • 在Mysql中再插入两条数据
insert into tb_tohdfs values(null,'laojiu',26); 
insert into tb_tohdfs values(null,'laoshi',27);
  • 创建一个sqoop job
    • 只是定义,不会运行
      在这里插入图片描述
bin/sqoop job --create job01 \
-- import \
--connect jdbc:mysql://node-03:3306/sqoop \
--username root \
--password 123456 \
--table tb_tohdfs \
--target-dir /sqoop/import/test04 \
--fields-terminated-by '\t' \
--incremental append \
--check-column id \
--last-value 8 \
-m 1
  • 查看所有的job
bin/sqoop job --list
  • 查看某个job的信息
    • 注意:会让你输入Mysql的密码:123456
bin/sqoop job --show job01
  • 执行一个Sqoop的Job
    • 注意:会让你输入Mysql的密码:123456
bin/sqoop job --exec job01
  • 问题

  • 每次Sqoop job查看信息或者 运行时都要输入密码,怎么能不输密码?

  • 修改Sqoop的sqoop-site.xml这个配置文件

vim conf/sqoop-site.xml
#在121行和128行,去掉注释,开启以下参数
  <property>
    <name>sqoop.metastore.client.record.password</name>
    <value>true</value>
    <description>If true, allow saved passwords in the metastore.
    </description>
  </property>
  • 将第一次输入的密码,保存在元数据中
  • 重新创建job,只有第一次需要输入密码

Sqoop的程序中密码是暴露的?

  • –password 来指定的

  • 方案一:使用-P来代替–password

    • 在执行时手动输入密码
bin/sqoop list-databases \
--connect jdbc:mysql://node-03:3306 \
--username root \
-P
  • 方案二:–password-file来代替

    • 将密码保存在一个文件中,读取文件来实现
bin/sqoop list-databases \
--connect jdbc:mysql://node-03:3306 \
--username root \
--password-file  file:///export/datas/mypasswd
  • 实现
  • 创建编辑
vim /export/datas/mypasswd
123456
  • 用nodepad++打开这个文件,删掉第二行的换行
    在这里插入图片描述
  • 问题:默认SQOOP读取hdfs的文件

2、Sqoop 脚本

  • 在工作中,增量采集的job都是每天执行一次,需要调度执行
  • 如何在脚本中封装Sqoop的命令呢?
  • 能不能实现类似于Hive,将Sqoop的程序封装一个文件中,运行这个文件?
  • 实现:
  • 创建一个文件,将sqoop的代码放入文件,注意必须一行一个参数
vim /export/datas/sqoop.txt
import
--connect 
jdbc:mysql://node-03:3306/sqoop
--username 
root
--password 
123456
--table
tb_tohdfs
--delete-target-dir
--target-dir 
/sqoop/import/test05
--fields-terminated-by 
'\t'
-m 
1
  • 通过Sqoop运行这个文件
bin/sqoop --options-file /export/datas/sqoop.txt
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值