com.microsoft.sqlserver.jdbc.SQLServerException:从 Apache Spark Databricks 读取 Azure SQLDB 时出错
com.microsoft.sqlserver.jdbc.SQLServerException: Error when reading Azure SQLDB from Apache Spark Databricks
我回答了我之前的一个问题,但是,在解决了这个问题之后,我面临着另一个关于 SQLServerException 的问题。
我正在尝试读入 Azure SQLDB 上的数据。
我已成功通过服务器身份验证,但是当我尝试应用该函数读取数据时,出现以下错误:
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near
'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
代码如下:
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}")
有人可以让我知道代码的一般含义以及修复它的最佳方法吗?
就像@mac 和Alex Ott 说的,错误主要是由查询语句引起的。
我们很高兴听到通过修改查询解决了错误。
我回答了我之前的一个问题,但是,在解决了这个问题之后,我面临着另一个关于 SQLServerException 的问题。
我正在尝试读入 Azure SQLDB 上的数据。 我已成功通过服务器身份验证,但是当我尝试应用该函数读取数据时,出现以下错误:
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '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
代码如下:
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}")
有人可以让我知道代码的一般含义以及修复它的最佳方法吗?
就像@mac 和Alex Ott 说的,错误主要是由查询语句引起的。
我们很高兴听到通过修改查询解决了错误。