oozie sqoop 动作具有 --map-column-java
Posted
技术标签:
【中文标题】oozie sqoop 动作具有 --map-column-java【英文标题】:oozie sqoop action having --map-column-java 【发布时间】:2015-08-18 07:26:53 【问题描述】:我在 oozie 工作流程中遇到 sqoop 操作错误。当我从 unix propmt 运行相同的 sqoop 命令来测试它的工作原理时,但在 oozie 中它失败了
日志..
Sqoop 命令参数:
进口
- 连接
"jdbc:sqlserver://xxxx:1433;databaseName=INS;username=xxx;password=xxx"
- 询问
"select * from dbo.tu4h3 WHERE CONCAT(substring(convert (CHAR(20),TIMESTAMP_UPDATED,120),1,10),substring(convert (CHAR(20),TIMESTAMP_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
--fields-terminated-by
\001
--压缩编解码器
活泼的
--拆分
TIMESTAMP_UPDATED
--map-column-java
TIMESTAMP_UPDATED=字符串;
发射时间 = 1439879702947
作业启动时间 = 1439879702947 mapreduce.job.tags = oozie-1759ebad3e0fed00730556361c9eb485
现在调用 Sqoop 命令行 >>>
1867 [main] WARN org.apache.sqoop.tool.SqoopTool - $SQOOP_CONF_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_CONF_DIR 尚未在环境中设置。无法检查其他配置。
1940 [main] INFO org.apache.sqoop.manager.SqlManager - 使用 1000 的默认 fetchSize
1940 [main] INFO org.apache.sqoop.tool.CodeGenTool - 开始代码生成
2230 [main] INFO org.apache.sqoop.manager.SqlManager - 执行 SQL 语句:select * from dbo.tu4h3 WHERE CONCAT(substring(convert (CHAR(20),TIMESTAMP_UPDATED,120),1,10),substring(convert (CHAR(20),TIMESTAMP_UPDATED,120),12,19)) >= 'date "+%Y-%m-%d%T" -d "1 days ago"
' 和 (1 = 0)
2323 [main] INFO org.apache.sqoop.manager.SqlManager - 执行 SQL 语句:select * from dbo.tu4h3 WHERE CONCAT(substring(convert (CHAR(20),TIMESTAMP_UPDATED,120),1,10),substring(convert (CHAR(20),TIMESTAMP_UPDATED,120),12,19)) >= 'date "+%Y-%m-%d%T" -d "1 days ago"
' 和 (1 = 0)
2339 [main] 错误 org.apache.sqoop.orm.ClassWriter - Java 类型字符串没有 ResultSet 方法;
2340 [main] 错误 org.apache.sqoop.tool.ImportTool - 导入失败:Java 类型字符串没有 ResultSet 方法;
拦截 System.exit(1)
失败的 Oozie 启动器,主类 [org.apache.oozie.action.hadoop.SqoopMain],退出代码 [1]
Oozie Launcher 失败,正常完成 Hadoop 作业
Oozie Launcher,上传动作数据到HDFS序列文件:hdfs://csaa-aap-qa/user/hdfs/oozie-oozi/0000910-150729052958048-oozie-oozi-W/create-sqoop--sqoop/action -data.seq
Oozie Launcher 结束
【问题讨论】:
【参考方案1】:这个问题与 Sqoop 或 Java 无关。
您的 Sqoop 参数包含一个 动态参数,它表示为 bash 脚本 sn-p,使用 date
。因此,当您在 Linux 控制台中运行它时,它就可以工作。
但是 Oozie 不是一个 Linux 控制台,它是一个 Java 应用程序。 “日期”的东西作为字符串处理。这就是它在错误消息中按原样显示的原因 - 您应该注意到这一点。
如果您对 Oozie 中的动态日期参数感兴趣,请查看this post。
【讨论】:
如果没有“--map-column-java TIMESTAMP_UPDATED=String;”,我的 sqoop 操作可以正常工作..Timestamp_updated 是表中的日期时间数据类型列,这里没有什么是动态的...... 感谢 Samson...我将该日期动态参数移到了 oozie 中的 shell 操作中...现在我可以成功运行它以上是关于oozie sqoop 动作具有 --map-column-java的主要内容,如果未能解决你的问题,请参考以下文章