hadoop - 从 hdfs 到 GreenPlum 的 Sqoop 导出不起作用

标签 hadoop hdfs sqoop greenplum

我正在尝试将数据从 hdfs 位置导出到 Greenplum 用户定义的模式(不是默认模式)。

尝试使用 Sqoop Eval 来检查连接。

sqoop eval --connect "jdbc:postgresql://sample.com:5432/sampledb" --username sample_user --password xxxx --query "SELECT * FROM sample_db.sample_table LIMIT 3"

结果: 工作正常

尝试使用 --schema 选项

/usr/bin/sqoop export --connect "jdbc:postgresql://sample.com:5432/sampledb" --username sampleuser --password samplepassword --table sample_table --schema sample_schema --export-dir=/sample/gp_export --input-fields-terminated-by ',' --update-mode allowinsert

结果:

Warning: /usr/hdp/2.3.6.0-3796/accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
18/06/25 11:09:41 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6.2.3.6.0-3796
18/06/25 11:09:41 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
18/06/25 11:09:41 ERROR tool.BaseSqoopTool: Error parsing arguments for export:
18/06/25 11:09:41 ERROR tool.BaseSqoopTool: Unrecognized argument: --schema
18/06/25 11:09:41 ERROR tool.BaseSqoopTool: Unrecognized argument: sample_schema
18/06/25 11:09:41 ERROR tool.BaseSqoopTool: Unrecognized argument: --export-dir=/sample/gp_export
18/06/25 11:09:41 ERROR tool.BaseSqoopTool: Unrecognized argument: --input-fields-terminated-by
18/06/25 11:09:41 ERROR tool.BaseSqoopTool: Unrecognized argument: ,
18/06/25 11:09:41 ERROR tool.BaseSqoopTool: Unrecognized argument: --update-mode
18/06/25 11:09:41 ERROR tool.BaseSqoopTool: Unrecognized argument: allowinsert

根据 sqoop 文档,在 '--schema' 之前添加了额外的 '--' https://sqoop.apache.org/docs/1.4.3/SqoopUserGuide.html

 /usr/bin/sqoop export --connect "jdbc:postgresql://sample.com:5432/sampledb" --username sampleuser --password samplepassword --table sample_table -- --schema sample_schema --export-dir=/sample/gp_export --input-fields-terminated-by ',' --update-mode allowinsert

结果:

Warning: /usr/hdp/2.3.6.0-3796/accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
18/06/25 11:06:26 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6.2.3.6.0-3796
18/06/25 11:06:26 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
Export requires an --export-dir argument or --hcatalog-table argument.
Try --help for usage instructions.

有人可以指导我吗?谢谢

最佳答案

感谢@cricket_007 的澄清。

--schema 参数应该放在 sqoop 命令的最后。所以下面的代码是有效的。

    /usr/bin/sqoop export --connect "jdbc:postgresql://sample.com:5432/sampledb"  \ 
--username sampleuser --password samplepassword  \ 
--export-dir=/sample/gp_export --input-fields-terminated-by ','  \ 
--table sample_table -- --schema sample_schema

但是 postgresSql 不支持 UPSERT 操作。这里有一张开放的 Jira 票。 https://issues.apache.org/jira/browse/SQOOP-1270

关于hadoop - 从 hdfs 到 GreenPlum 的 Sqoop 导出不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51049838/

相关文章:

java - flink : Could not initialize class org. apache.hadoop.hdfs.protocol.HdfsConstants

hadoop - block 池如何在 HDFS 联合中运行

hadoop - 使用sqoop将最近3天的增量数据从Oracle加载到HDFS

scala - Hortonwork HDP 2.1 支持什么版本的 Scala?

hadoop - 使用 hdfs 的 Impala 分区表

json - 在 Pig 中解析复杂的嵌套 JSON

hadoop - 以安全模式启动的节点

mysql - hadoop 如何处理从 RDBMS 获取的行的更改

mysql - Cloudera Sqoop导入SQL查询问题 "where"子句

sql - 如何减少连接数?