【问题标题】:Sqoop - Use schema in saved jobSqoop - 在保存的作业中使用模式
【发布时间】:2018-01-18 22:22:53
【问题描述】:

当我在 shell 上运行这个命令时工作正常:

sqoop import --incremental append --check-column id_civilstatus --last-value -1 
--connect jdbc:postgresql://somehost/somedb --username someuser 
--password-file file:///passfile.txt --table sometable --direct -m 3 
--target-dir /jobs/somedir -- --schema someschema

但是当我尝试将其保存为工作时:

sqoop job --create myjob -- import --incremental append --check-column id_civilstatus 
--last-value -1 --connect jdbc:postgresql://somehost/somedb --username someuser 
--password-file file:///passfile.txt --table sometable --direct -m 3 
--target-dir /jobs/somedir -- --schema someschema

然后我执行:

sqoop job --exec myjob

我收到此错误消息:

PSQLException: ERROR: relation "sometable" does not exist

这是由于默认架构中不存在“sometable”而导致的错误。

为什么 sqoop 作业不带 schema 参数?我错过了什么?

谢谢

【问题讨论】:

    标签: postgresql hadoop hdfs database-schema sqoop


    【解决方案1】:

    您可以在 jdbc 连接 More detail 中指定 /change 默认架构传递 "?currentSchema=myschema"。

    jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
    

    【讨论】:

      【解决方案2】:

      你不需要单独提到schema,你可以把它放在jdbc URL中,不确定postgres jdbc URL是否有这个选项。您必须将其添加到表格选项本身中。像下面这样的

      —table schemaName.tableName
      

      【讨论】:

      • 这不是 sqoop 的选项。
      【解决方案3】:

      使用以下作为您的 JDBC URL

      jdbc:postgresql://somehost/somedb/someschema 
      

      并从 Sqoop 语句中删除 --schema someschema

      【讨论】:

        【解决方案4】:

        我找到了一种方法来完成这项工作here

        sqoop job --exec myjob -- -- --schema someschema
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-06-15
          • 1970-01-01
          • 2016-08-01
          • 2017-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多