0

使用 Spark 2.4.0 和 Exasol 6.2.0,我想通过 JDBC 的简单查询创建一个基于 jdbc 的 DataFrame SELECT * FROM table_name

这是scala中的代码:

      df = sparkSession.read
        .format("jdbc")
        .option("driver", sourceJDBCConn("jdbcDriver"))
        .option("url", sourceJDBCConn("jdbcUrl"))
        .option("user", sourceJDBCConn("jdbcUsername"))
        .option("password", sourceJDBCConn("jdbcPassword"))
        .option("query", "SELECT * FROM table_name")
        .load()

这适用于 PostgreSQL,但不适用于 Exasol。如果我查看会话审计,我会发现以下 SQL:

SELECT * FROM (SELECT * FROM table_name) __SPARK_GEN_JDBC_SUBQUERY_NAME_0 WHERE 1=0

Exasol 的错误消息如下:

syntax error, unexpected $undefined, expecting UNION_ or EXCEPT_ or MINUS_ or INTERSECT_ [line 1, column 98]

虽然 PostgreSQL 看起来接受带有 2 个前导下划线的别名,但 Exasol 中不允许使用这样的别名。是否有任何解决方法可以使用 Exasol 接受的标识符更改别名 __SPARK_GEN_JDBC_SUBQUERY_NAME_0 的名称?

4

0 回答 0