【问题标题】:Sqoop: how switch off Prepared Statements?Sqoop:如何关掉Prepared Statements?
【发布时间】:2016-10-25 20:58:15
【问题描述】:

我使用 Sqoop 1.4.5-cdh5.4.2 和 Postgresql。

如果 Sqoop 直接连接到数据库 - 好的。 但是需要使用 Sqoop 而不是 pgbouncer,我对此有疑问。

在 pgbouncer 中你不能做准备好的语句事务模式。

...连接命令:

sqoop import \
    --connect "$db_name" \
    --username "$db_user" \
    --password "$db_pass" \
    --direct \
    --hive-import \
    --hive-table "$hive_schema.$t" \
    --hive-overwrite \
    --num-mappers 10 \
    --fetch-size 100000 \
    --split-by "object_id" \
    --target-dir "/user/$hive_schema/$t" \
    --table "$t"

...和错误:

org.postgresql.util.PSQLException: ERROR: prepared statement "S_3" already exists
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.executeTransactionCommand(AbstractJdbc2Connection.java:791)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.commit(AbstractJdbc2Connection.java:815)
    at org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:315)
    at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:241)
    at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:227)
    at org.apache.sqoop.hive.TableDefWriter.getCreateTableStmt(TableDefWriter.java:126)
    at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:188)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:514)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

【问题讨论】:

  • 如果您当然使用jdbc,请尝试将prepareThreshold=0 添加到--connect

标签: postgresql jdbc sqoop psql pgbouncer


【解决方案1】:

在连接字符串中添加prepareThreshold=0

【讨论】:

    【解决方案2】:

    SQOOP 不适用于 pgbouncer 和事务池 :(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-14
      • 2012-08-23
      • 2013-08-25
      • 2012-10-04
      • 1970-01-01
      • 2013-05-05
      • 2015-09-03
      • 2014-03-29
      相关资源
      最近更新 更多