我有一个场景,我可以使用Spark SQL(Python)从Apache Drill读取数据框,但我无法执行任何连接。
以下是查询的外观
def drillConnection(tableName):
return spark.read.format("jdbc").options(url="<connection url>",driver="<drill driver>",dbtable="<table>",user="<un>",password="<pwd>").load()
df_query = '''SELECT COL1,COL2,COL3 FROM TABLE'''
# <We have another data frame read from a file. Lets name it DataF>
df = drillConnection(df_query)
# drillConnection is where we get the data as a data frame from drill
newDF = df.join(DataF,'COL1')
newDF.show()
运行上面的代码后,我收到以下错误
java.sql.SQLException: Failed to create prepared statement: PARSE ERROR: Encountered "\"" at line 1 col 22.
确切地说,Spark内部转换的查询级别的错误看起来像这样
Query SELECT * FROM (SELECT "COL1" FROM (SELECT COL1,COL2,COL3 FROM TABLE)) LIMIT 0
^
请帮助我,因为我似乎没有做错任何事。这是一个基本操作,当我在Hive中运行时,它运行良好。感谢。
PS:请注意,它不是Spark SQL - load data with JDBC using SQL statement, not table name的副本,因为op正在寻找从数据库中读取表格。在这里,我能够从数据库中提取数据,我面临着加入的问题。我没有做任何事情,比如在列名称等中添加双引号。它的内部而不是我做的火花。我在上面看到的虚假错误是在spark做了自己的查询而不是我写的东西之后。我在从Drill读取数据后,正在进行简单的连接操作。希望这澄清。