博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oozie分布式任务的工作流——Sqoop篇
阅读量:7223 次
发布时间:2019-06-29

本文共 3371 字,大约阅读时间需要 11 分钟。

Sqoop的使用应该是Oozie里面最常用的了,因为很多BI数据分析都是基于业务数据库来做的,因此需要把mysql或者oracle的数据导入到hdfs中再利用mapreduce或者spark进行ETL,生成报表信息。

因此本篇的Sqoop Action其实就是运行一个sqoop的任务而已。

同样action会等到sqoop执行成功后,才会执行下一个action。为了运行sqoop action,需要提供job-tracker,name-node,command或者arg元素。

sqoop action也可以在开启任务前去创建或者删除hdfs中的目录。

sqoop action的配置可以通过job-xml指定文件进行配置,也可以直接在configuration元素中配置。

语法规则

...
[JOB-TRACKER]
[NAME-NODE]
...
...
[PROPERTY-NAME]
[PROPERTY-VALUE]
...
[SQOOP-COMMAND]
[SQOOP-ARGUMENT]
...
[FILE-PATH]
...
[FILE-PATH]
...
...
  • prepare元素,用于创建或者删除指定的hdfs目录。
  • job-xml可以指定sqoop action的参数配置
  • confuguration用于配置sqoop任务

sqoop command

sqoop命令可以通过command和arg标签组成。

当使用command元素时,oozie将会按照空格切分命令,作为参数。因此当你使用query的时候,就不能用command了!

当使用arg的时候,每个arg都是一个参数。

所有的参数部分,都可以使用EL表达式。

例子

基于command的例子

...
foo:8021
bar:8020
mapred.compress.map.output
true
import --connect jdbc:hsqldb:file:db.hsqldb --table TT --target-dir hdfs://localhost:8020/user/tucu/foo -m 1
...

基于arg元素的例子

...
foo:8021
bar:8020
mapred.compress.map.output
true
import
--connect
jdbc:hsqldb:file:db.hsqldb
--table
TT
--target-dir
hdfs://localhost:8020/user/tucu/foo
-m
1
...

遇到的问题

经常会遇到这种问题:直接使用sqoop可以执行,但是在oozie中就无法执行了。这个时候可以按照下面的思路进行排查:

  • 1 oozie中的lib是否与sqoop相同。对比sqoop/lib以及oozie/lib/xxx/sqoop就可以了
  • 2 oozie中如果是以arg这种方式启动。那么问题很有可能出在query的别名以及split-by参数上.... 因为在sqoop中可以自动推断,但是在oozie中就无法知道字段所属的表了。

举个例子

sqoop --import .... --query "select a.*,b.* from t1 a left join t2 b on a.id=b.id..." --split-by id ...

这个时候oozie里面,无法知道id到底是哪个表的。需要指定它的别名才可以

...
--split-by
a.id
...
本文转自博客园xingoo的博客,原文链接:,如需转载请自行联系原博主。
你可能感兴趣的文章
UML关系(泛化,实现,依赖,关联(聚合,组合))
查看>>
Servlet生命周期
查看>>
多重赋值
查看>>
运行topology出现错误
查看>>
错误状态的实例恢复方法
查看>>
seci-log 1.10 发布 增加了全文搜索密码加密等多个功能点
查看>>
ios游戏开发 Sprite Kit教程:初学者 1
查看>>
lae界面开发工具入门之介绍十一--<安卓系统如何编译打包?>
查看>>
Java对象创建
查看>>
android 开发中向文件指定位置写入数据
查看>>
关于maven使用的一些心得
查看>>
nodejs 开发工具 sublime
查看>>
hadoop集群部署注意问题
查看>>
firefox 选中变删除
查看>>
javascript闭包的个人理解
查看>>
使用HBuilder基于HTML5编写新闻客户端APP的一些实验
查看>>
Description Resource Path Location Type The projec
查看>>
JdbcTemplate详解
查看>>
我的友情链接
查看>>
计算子序列和是定值的子序列个数
查看>>