Apache spark jdbc 连接到 apache drill 错误

Apache spark jdbc connect to apache drill error

我正在从 apache spark 向 apache drill 发送查询。我收到以下错误:

java.sql.SQLException: Failed to create prepared statement: PARSE ERROR: Encountered "\"" at line 1, column 23.

跟踪时,我发现我需要写一个自定义的sql方言。问题我没有找到 pyspark 的任何示例。所有示例均针对 scala 或 java。非常感谢任何帮助。!

这是 pyspark 代码:

`dataframe_mysql = spark.read.format("jdbc").option("url", "jdbc:drill:zk=ip:2181;schema=dfs").option("driver","org.apache.drill.jdbc.Driver").option("dbtable","dfs.`/user/titanic_data/test.csv`").load()`

您似乎在 SQL 查询中使用了双引号(请分享您的 SQL)。

默认情况下,Drill 使用反引号来引用标识符 - `
但是您可以通过设置 system/session 选项来更改它(例如当您已经通过 JDBC 连接到 Drill 时)或者您可以在 JDBC 连接字符串中指定它。您可以在这里找到更多信息: https://drill.apache.org/docs/lexical-structure/#identifier-quotes

我导航到 drill web ui 并将 planner.parser.quoting_identifiers 参数更新为 "。然后我按如下方式编辑我的查询:

dataframe_mysql = spark.read.format("jdbc").option("url", "jdbc:drill:zk=ip:2181;schema=dfs;").option("driver","org.apache.drill.jdbc.Driver").option("dbtable","dfs.\"/user/titanic_data/test.csv\"").load()

而且效果很好!