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 では許可されていません。エイリアス __SPARK_GEN_JDBC_SUBQUERY_NAME_0 の名前を Exasol が受け入れる識別子に変更する回避策はありますか?