【问题标题】:oozie sqoop action having --map-column-javaoozie sqoop 动作具有 --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 结束

【问题讨论】:

    标签: java hadoop sqoop oozie


    【解决方案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 操作中...现在我可以成功运行它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    相关资源
    最近更新 更多