我在oozie工作流中遇到sqoop操作错误。当我从unix propmt运行相同的sqoop命令来测试它时,它工作正常,但在oozie中失败了
日志。。
sqoop命令参数:import--connect“jdbc:sqlserver://x:1433;databasename=ins;用户名=;password=“--查询”select*from dbo.tu4h3 where concat(substring(convert(char(20),timestamp\u updated,120),1,10),substring(convert(char(20),timestamp\u updated,120),12,19))>=' date "+%Y-%m-%d%T" -d "1 days ago"
'和$conditions“-m 8--目标目录hdfs://csaa-aap-qa/user/xgkg5red/tu4h3/2015-08-17 --由\001终止的字段--压缩编解码器snappy--按时间戳拆分\u updated--Map列java timestamp \u updated=string;发射时间=1439879702947
作业启动时间=1439879702947 mapreduce.job.tags=oozie-1759ebad3e0fed00730556361c9eb485
现在调用sqoop命令行>>>
1867[main]warn org.apache.sqoop.tool.sqooptool-$sqoop\u conf\u dir尚未在环境中设置。无法检查其他配置。1900[main]info org.apache.sqoop.sqoop-运行sqoop版本:1.4.4.2.1.5.0-695 1918[main]warn org.apache.sqoop.connfactory-尚未在环境中设置$sqoop\u conf\u dir。无法检查其他配置。1940[main]info org.apache.sqoop.manager.sqlmanager-使用默认的fetchsize 1000 1940[main]info org.apache.sqoop.tool.codegentool-开始代码生成2230[main]info org.apache.sqoop.manager.sqlmanager-执行sql语句:从dbo.tu4h3选择其中concat(子字符串(convert(char(20),timestamp_updated,120),1,10),子字符串(convert(char(20),timestamp\u updated,120),12,19))>=' date "+%Y-%m-%d%T" -d "1 days ago"
'和(1=0)2323[main]info org.apache.sqoop.manager.sqlmanager-执行sql语句:从dbo.tu4h3中选择其中concat(substring(convert(char(20),timestamp\u updated,120),1,10),substring(convert(char(20),timestamp\u updated,120),12,19))>=' date "+%Y-%m-%d%T" -d "1 days ago"
'和(1=0)2339[main]error org.apache.sqoop.orm.classwriter-没有java类型字符串的resultset方法;2340[main]error org.apache.sqoop.tool.importtool-导入失败:没有java类型字符串的resultset方法;拦截系统出口(1)
<<主类调用已完成<<<
失败的oozie启动程序,主类[org.apache.oozie.action.hadoop.sqoopmain],退出代码[1]
oozie启动程序失败,优雅地完成了hadoop作业
oozie启动器,将动作数据上载到hdfs序列文件:hdfs://csaa-aap-qa/user/hdfs/oozie-oozi/0000910-150729052958048-oozie-oozi-w/create-sqoop--sqoop/action-data.seq
oozie启动程序结束
1条答案
按热度按时间hgqdbh6s1#
这个问题与sqoop或java无关。
您的sqoop参数包含一个动态参数,该参数表示为bash脚本片段,使用
date
. 因此,当您在linux控制台中运行它时,它就可以工作了。但是oozie不是一个linux控制台,而是一个java应用程序。“日期”的东西被当作字符串处理。这就是为什么它在错误消息中显示为原样-这是您应该注意到的。
如果你对oozie中的动态日期参数感兴趣,可以看看这篇文章。