Sqoop - 在保存的作业中使用模式

时间:2018-01-18 22:22:53

标签: postgresql hadoop hdfs database-schema sqoop

当我在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作业不采用架构参数?我错过了什么?

由于

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您不需要单独提及架构,您可以将其保存在jdbc URL中,不确定postgres jdbc URL是否具有该选项。您必须在表选项本身中添加它。像下面的东西

—table schemaName.tableName

答案 2 :(得分:0)

使用以下作为JDBC URL

jdbc:postgresql://somehost/somedb/someschema 

并从Sqoop声明中删除--schema someschema

答案 3 :(得分:0)

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

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