0

我正在尝试使用 Hadoop Sqoop 从 Presto 数据库中提取数据,这会在 Presto 中引发此错误:

18/07/12 10:34:05 DEBUG manager.SqlManager: No connection paramenters specified. Using regular API for making connection.
18/07/12 10:34:06 ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: [Teradata][Presto](100050) Query failed: Current transaction is aborted, commands ignored until end of transaction block.
java.sql.SQLException: [Teradata][Presto](100050) Query failed: Current transaction is aborted, commands ignored until end of transaction block.
    at com.teradata.presto.presto.PRUtils.parseError(Unknown Source)
    at com.teradata.presto.presto.dataengine.PRResultSet.parseDataString(Unknown Source)
    at com.teradata.presto.presto.dataengine.PRResultSet.execute(Unknown Source)
    at com.teradata.presto.presto.dataengine.PRResultSet.<init>(Unknown Source)
    at com.teradata.presto.presto.dataengine.PRQueryExecutor.<init>(Unknown Source)
    at com.teradata.presto.presto.dataengine.PRDataEngine.prepare(Unknown Source)
    at com.teradata.presto.jdbc.common.SPreparedStatement.<init>(Unknown Source)
    at com.teradata.presto.jdbc.jdbc41.S41PreparedStatement.<init>(Unknown Source)
    at com.teradata.presto.jdbc.jdbc42.S42PreparedStatement.<init>(Unknown Source)
    at com.teradata.presto.jdbc.jdbc42.JDBC42ObjectFactory.createPreparedStatement(Unknown Source)
    at com.teradata.presto.presto.jdbc42.PRJDBC42ObjectFactory.createPreparedStatement(Unknown Source)
    at com.teradata.presto.jdbc.common.SConnection.prepareStatement(Unknown Source)
    at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:744)
    at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:767)
    at org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:270)
    at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:241)
    at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:227)
    at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:295)
    at org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1833)
    at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1645)
    at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)
    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)

Presto DB 端没有错误。Sqoop 命令:

sqoop-import \
--verbose \
--driver com.teradata.presto.jdbc42.Driver
--connect 'jdbc:presto://bla:8443/hive?SSL=true&SSLTrustStorePath=bla&SSLTrustStorePassword=bla' \
--username bla -P \
--table hive.bla.blah \
--m 2

Teradata Presto 驱动版本:PrestoJDBC42-1.0.21.1031.jar

4

1 回答 1

2

Hive 连接器仅支持 READ_UNCOMMITTED,而 sqoop 正在请求无法支持的 READ_COMMITTED。如果可以将 sqoop 更改为 READ_UNCOMMITED 那么它应该可以工作。

于 2018-07-13T05:44:13.053 回答