sqoop1.4.4从oracle导数据到hive中
sqoop从oracle定时增量导入数据到hive
感谢:
http://blog.sina.com.cn/s/blog_3fe961ae01019a4l.html
http://f.dataguru.cn/thread-94073-1-1.html sqoop.metastore.client.record.password
http://blog.csdn.net/ryantotti/article/details/14226635 开启sqoop metastore
step 1 创建sqoop job
a.配置sqoop metastore服务
修改sqoop/conf/sqoop-site.xml文件
相关属性:
sqoop.metastore.server.location
sqoop.metastore.server.port
sqoop.metastore.client.autoconnect.url
上面三个参数是为了实现共享(shared)metastore,"By default, job descriptions are saved to a private repository stored in $HOME/.sqoop/
. You can configure Sqoop to instead use a shared metastore, which makes saved jobs available to multiple users across a shared cluster. Starting the metastore is covered by the section on the sqoop-metastore
tool."这样在其他的cluster上就可以共享job并执行。
如果不需要共享job,只需要把上面三个属性在配置文件中用<!-- -->注释掉即可。
sqoop.metastore.client.enable.autoconnect
sqoop.metastore.client.record.password 这个属性是为了保存数据库密码的,默认情况下处于安全需要,不会将密码保存到metastore中,这样每次执行job时就需要重新输入数据库的密码。为了定时执行,我们修改这个属性,是他可以保存密码。
修改如下:
<property>
<name>sqoop.metastore.server.location</name>
<value>/tmp/sqoop-metastore/shared.db</value>
</property>
<property>
<name>sqoop.metastore.server.port</name>
<value>16000</value>
</property>
<property>
<name>sqoop.metastore.client.autoconnect.url</name>
<value>jdbc:hsqldb:hsql://118.228.197.115:16000/sqoop</value>
</property>
<property>
<name>sqoop.metastore.client.record.password</name>
<value>true</value>
</property>
<!--注释掉这个属性
<property>
<name>sqoop.metastore.client.enable.autoconnect</name>
<value>false</value>
</property>
-->
b.启动metasotre,控制台执行sqoop metastore命令(如果没有配置前三个属性,请跳过此步骤)
c.创建sqoop job
(为了方便执行,将下面的脚本写入到文件保存,然后用chmod u+x FILENAME修改权限后,通过 ./FILENAME执行文件,创建job)
sqoop job --meta-connect jdbc:hsqldb:hsql://hostIP:16000/sqoop --create JOBNAME -- import --hive-import --incremental append --connect jdbc:oracle:thin:@DatabaseIP:1521/INSTANCENAME --username USERNAME --password PASSWD --verbose -m 1 --bindir /opt/sqoop/lib --table TABLENAME --check-column COLUMNNAME --last-value VALUE
注意:
1) 如果前面没有配置共享metastore(即”sqoop.metastore.server.location" 、”sqoop.metastore.server.port“、”sqoop.metastore.client.autoconnect.url“三个属性在配置文件中已经注释了),那就需要将上面的脚本中 ”--meta-connect jdbc:hsqldb:hsql://hostIP:16000/sqoop“ 去掉。
2) "--create JOBNAME -- import"中”--“后面加一个空格再写import命令,否则执行出错
3) --check-column列不能是char varchar等,可以是date,int,
参考官网:http://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html 在官网页面查找 check-column字段,快速定位到相关解释
step 2 执行sqoop job看是否可以顺利进行
<!--查看job列表,看是否成功创建-->
sqoop job --list
<!--执行job,测试能否正常执行,此处如果导入的数据量大,会很耗费时间-->
sqoop job --exec JOBNAME
step 3 确定sqoop job可以正常执行后,编写脚本定时执行
将下面的脚本写入一个文本文件,如 execJob,然后执行 chmod u+x execJob 命令添加可执行权限
source /etc/profile
rm TABLENAME.java -f
sqoop job -exec JOBNAME
step 4 用crontab工具实现定时执行
执行crontab -e 命令,添加如下一行脚本,保存退出即可
# 每天1点钟执行数据导入job
* * * execJob 1>/root/execlogs 2>&1
注意:execJob就是step3创建的脚本文件,需要用具体的路径,如/root/execJob。“1>/root/execlogs 2>&1”这句是重定向stdout和stderr输出对象到指定文件,可以在文件中查看执行输出的信息。
crontab命令工具用法参考:
http://www.cnblogs.com/jiafan/articles/1153066.html
http://baike.baidu.com/view/1229061.htm
最新文章
- java的poi技术读取Excel数据到MySQL
- ACM/ICPC 之 Unix会议室(POJ1087)
- 玩转GIT
- 基于HT for Web矢量实现2D叶轮旋转
- Struts2学习笔记(三):result配置的各项视图转发类型
- JavaScript语法学习笔记
- js中&;&; 和 ||
- 浅谈 var 关键字
- 机器学习技法:09 Decision Tree
- 非参数估计:核密度估计KDE
- saltstack安装部署以及简单实用
- [JavaScript]ECMA-6 yield语法
- Python基础测试有关联的接口
- 查看当前的app运行的是哪个Activity
- 全志A33 lichee怎样编译镜像
- Mybatis工程搭建
- java 传入list集合 返回树形菜单,for循环遍历
- 用 Python+nginx+django 打造在线家庭影院
- eclipse 打包maven项目的坑
- 【BZOJ】1875: [SDOI2009]HH去散步 矩阵快速幂
热门文章
- gin框架中间件解决跨域问题
- Gitlab系列八之重置管理员密码
- 入侵者已经拿到了主机的管理员权限,请你列举几种留后门的方法:(windows和LINUX系统均可)
- C++ x86程序与x64程序中,各种内置类型的大小比较
- Linux 下动态查找磁盘数量方法
- 【Python3 爬虫】16_抓取腾讯视频评论内容
- 在Gridview中输入小数时报对于int32 太大或太小
- OgnlValueStack:49 - Error setting expression &#39;sfjmyh.zdyx6&#39; with value &#39;[Ljava.lang.String;@28d320d6&#39;
- Nginx-1.12.1安装配置
- 切换默认Activity和Fragment的动画