关于sqoop job免密导出mysql数据

一、介绍

我在这里阐述一下自己对sqoop job的简答理解:创建sqoop job可以将原来的sqoop提交作业代码固化,只需要创建一次,不需要每次运行时都输入过长的代码,便于重复地调用。

二、前提条件

我进行测试用的sqoop是1.4.7版本的。(这里特别提一下:1.4.6版本的可能不支持增量的导入一些功能)配置了hadoop 2.3.0版本的集群。

三、配置

1. 在sqoop的conf目录下修改sqoop-site.xml文件

文件内容添加以下内容:
<property> 
	<name>sqoop.metastore.client.record.password</name
	<value>true</value> 
	<description>If true, allow saved passwords in the metastore.</description> 
</property>

2. 编写mysql的密码文件,并上传到hdfs上

  1. 在liunx本地创建mysql密码文件:
    #echo –n “Root123@” > sqoop.pwd
    注意:文件个是必须正确。
  2. 上传密码文件到hdfs上:
    #hdfs dfs –put sqoop.pwd /sqoop/
  3. 将hdfs上的密码文件设置权限为400,必须为400:
    hdfs dfs –chmod 400 /sqoop/sqoop.pwd
  4. 确定是否设置权限成功:
    #hdfs dfs –ls /sqoop/sqoop.pwd

四、常用的sqoop job命令

1. 创建sqoop job任务

这里使用–password-file代替–password就是读取之前上传到hdfs上的密码文件来连接mysql。

sqoop job --create sqoopJobName -- import \ 
--connect jdbc:mysql://bigdata1:3306/*?useCursorFetch=true \ 
--username root \ 
--password-file /sqoop/sqoop.pwd \ 
--target-dir /mysqldb/t_order \ 
--table t_order \ 
--fields-terminated-by "\001" \ 
--incremental append \ 
--check-column id \ 
--last-value 0 \ 
-m 1

扩展:上面代码使用的是增量导入,使用sqoop job这种方法,在进行增量导入后就会记忆你的last-value的值,这样你下次运行时就不需要手动更新last-value的值。

2. 查看sqoop job

sqoop job -list

在这里插入图片描述

3. 删除sqoop job

sqoop job -delete sqoopJobName

4. 运行sqoop job

sqoop job -exec sqoopJobName

注意:sqoop job在没有使用密码文件时,运行sqoop job就会在过程中输入要连接数据库的密码,即使在sqoop job中已经有了—password Root123@这样的配置,还是要求你输入。所以就要按照上面配置免密运行。

五、测试时遇到的错误

在测试job –exec时,我遇到了关于缺少js相关jar包的异常。解决的办法就是在sqoop的lib目录下加入相应的jar包即可。Jar包下载地址:http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值