Apache spark com.microsoft.sqlserver.jdbc.SQLServerException:从Apache Spark数据库读取Azure SQLDB时出错
我回答了前面的一个问题,但是,在解决了这个问题之后,我面临着另一个关于SQLServerException的问题 我正在尝试在Azure SQLDB上读取数据。 我已成功通过服务器身份验证,但当我尝试应用该函数读取数据时,出现以下错误: com.microsoft.sqlserver.jdbc.SQLServerException:附近语法不正确 “5” 以下是有关错误的详细信息: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
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}")