Sqoop Job 应用(二)

@羲凡——只为了更好的活着

Sqoop Job 应用(二)

问:在看了 Sqoop Job 应用(一) 后应该对sqoop job有一定的认识了,但是实际业务中我们肯定不会每次都手动执行sqoop脚本,更不会盯着去输入数据库密码,那怎么办呢?
答:用调度器。之前的文章提到过用oozie调度sqoop,本文介绍用crontab

0.重点说明

a.省略输入密码要将之前的 –passowrd 换成 –password-file,后面跟hdfs上的密码文件
b.将密码写入文件并上传到hdfs,权限设置为400,命令如下

echo -n "pasword" > mysql_pwd
hdfs dfs -put mysql_pwd /testdata/pwd/mysql_pwd
hdfs dfs -chmod 400 /testdata/pwd/mysql_pwd

c.设置 sqoop-site.xmlsqoop.metastore.client.record.passwordtrue
d.如果报错 ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: Access denied for user 'root'@'deptest1' (using password: YES),则是你的mysql数据库密码有问题。我遇到一个天坑,我用echo命令将密码追加到文件后,密码改变了,来回折腾很多次才解决。发现时密码中有特殊字符,所以小朋友们一定要注意,出现该错误一定要来回检查mysql的密码,密码不行就换一个密码吧(我是这个干的,哈哈)

<property>
	<name>sqoop.metastore.client.record.password</name>
	<value>true</value>
	<description>If true, allow saved passwords in the metastore.
	</description>
</property>
1.创建job(仅仅修改了–password-file)
sqoop job \
--create job01_test \
-- \
import \
--connect jdbc:mysql://deptest23:3306/test_data \
--username root \
--password-file /testdata/pwd/mysql_pwd \
--table mysql_stu_info \
--split-by age \
--delete-target-dir \
--hive-drop-import-delims \
--hive-import \
--hive-overwrite \
--hive-database test_data \
--hive-table stu_info \
--fields-terminated-by '\t' \
-m 6
2.crontab 定时任务

如果你的电脑没有crontab,需要先安装,不会安装的找运维小哥哥

sudo crontab -uhadoop -e
* 1 * * * sqoop job --exec job01_test #每日凌晨1点跑任务

====================================================================

@羲凡——只为了更好的活着

若对博客中有任何问题,欢迎留言交流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值