Apache spark com.microsoft.sqlserver.jdbc.SQLServerException:从Apache Spark数据库读取Azure SQLDB时出错

Apache spark com.microsoft.sqlserver.jdbc.SQLServerException:从Apache Spark数据库读取Azure SQLDB时出错,apache-spark,azure-sql-database,databricks,Apache Spark,Azure Sql Database,Databricks,我回答了前面的一个问题,但是,在解决了这个问题之后,我面临着另一个关于SQLServerException的问题 我正在尝试在Azure SQLDB上读取数据。 我已成功通过服务器身份验证,但当我尝试应用该函数读取数据时,出现以下错误: com.microsoft.sqlserver.jdbc.SQLServerException:附近语法不正确 “5” 以下是有关错误的详细信息: Py4JJavaError Traceback (most

我回答了前面的一个问题,但是,在解决了这个问题之后,我面临着另一个关于SQLServerException的问题

我正在尝试在Azure SQLDB上读取数据。 我已成功通过服务器身份验证,但当我尝试应用该函数读取数据时,出现以下错误:

com.microsoft.sqlserver.jdbc.SQLServerException:附近语法不正确 “5”

以下是有关错误的详细信息:

Py4JJavaError                             Traceback (most recent call last)
<command-3741352302548628> in readFromDb(processId, query)
      3   try:
----> 4     jdbcDF = (spark.read
      5       .format("jdbc")

/databricks/spark/python/pyspark/sql/readwriter.py in load(self, path, format, schema, **options)
    209         else:
--> 210             return self._df(self._jreader.load())
    211 

/databricks/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py in __call__(self, *args)
   1303         answer = self.gateway_client.send_command(command)
-> 1304         return_value = get_return_value(
   1305             answer, self.gateway_client, self.target_id, self.name

有人能告诉我代码的一般含义和修复它的最佳方法吗?

就像@mac和Alex Ott所说的,错误主要是由查询语句引起的


我们很高兴听到通过修改查询解决了错误。

也许您的查询有语法错误?很可能是query@Patterson,您是否检查了查询并解决了错误?是的,我检查了。似乎问题出在@mck和Alex提出的查询上Ott@Patterson很高兴听到这个消息。你需要我把它贴出来作为答案并结束这个问题吗?
def readFromDb(processId, query):
  try:
    jdbcDF = (spark.read
      .format("jdbc")
      .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
      .option("url", f"jdbc:sqlserver://{DBServer}.database.windows.net;database={DBDatabase}")
      .option("user", DBUser)
      .option("query", query)
      .option("password", DBPword)
      .load()    
     )
    return jdbcDF
  except Exception as e:
    writeToLogs(processId,LogType.Error, EventType.FailReadFromDb, LogMessage.FailReadFromDb, errorType = ErrorType.FailReadFromDb)
    raise Error(f"{LogMessage.FailReadFromDb.value} ERROR: {e}")
  except:
    writeToLogs(processId,LogType.FailReadFromDb, EventType.FailReadFromDb, LogMessage.FailReadFromDb, errorType = ErrorType.FailReadFromDb)
    raise Error(f"{LogMessage.FailReadFromDb.value}")