Apache Spark JDBC连接到Apache钻取错误

时间:2018-07-10 13:45:25

标签: sql apache-spark pyspark apache-drill

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

  

java.sql.SQLException:无法创建准备好的语句:PARSE   错误:在第1行第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()`

2 个答案:

答案 0 :(得分:1)

好像您在SQL查询中使用了双引号(请共享您的SQL)。

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

答案 1 :(得分:0)

我导航到钻取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()

它像魅力一样起作用!