我正在从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()`
答案 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()
它像魅力一样起作用!