Apache spark pyspark sql server选择查询问题“;调用o39.jdbc时出错;

Apache spark pyspark sql server选择查询问题“;调用o39.jdbc时出错;,apache-spark,pyspark,sql-server-2012,Apache Spark,Pyspark,Sql Server 2012,我在执行下面的代码段时遇到下面的错误, 在本地文件路径中有关联的jar,但无法找出实际原因。 不知道是否与网关问题有关 import pyspark import pyspark.sql.functions as sp_fn import pyspark.sql.types as sp_type from pyspark.sql import DataFrame as SparkDF, SparkSession driverPath = '/home/path_to_spark_jars/jtd

我在执行下面的代码段时遇到下面的错误, 在本地文件路径中有关联的jar,但无法找出实际原因。 不知道是否与网关问题有关

import pyspark
import pyspark.sql.functions as sp_fn
import pyspark.sql.types as sp_type
from pyspark.sql import DataFrame as SparkDF, SparkSession
driverPath = '/home/path_to_spark_jars/jtds-1.3.1.jar'
sp = pyspark.sql.SparkSession.builder.enableHiveSupport().appName("Test"). \
config('spark.driver.extraClassPath', driverPath).getOrCreate()
url = 'jdbc:jtds:sqlserver://xx.xx.xx.xxx/db;'
connection_properties = {"user": 'user',"password": 'password',"driver": 'net.sourceforge.jtds.jdbc.Driver'}
query = 'SELECT A,B FROM dbo.TableOne(NOLOCK)'
mssql_df = sp.read.jdbc(url=url, table=query, properties=connection_properties)
错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/pathto/python3.6/site-packages/pyspark/sql/readwriter.py", line 560, in jdbc
    return self._df(self._jreader.jdbc(url, table, jprop))
  File "/pathto/python3.6/site-packages/py4j/java_gateway.py", line 1257, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "/pathto/python3.6/site-packages/pyspark/sql/utils.py", line 63, in deco
    return f(*a, **kw)
  File "/pathto/python3.6/site-packages/py4j/protocol.py", line 328, in get_return_value
    format(target_id, ".", name), value)
py4j.protocol.Py4JJavaError: An error occurred while calling o39.jdbc.
: java.sql.SQLException: Incorrect syntax near the keyword 'SELECT'.
        at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
        at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2988)
        at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2421)
        at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:671)
        at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:505)
        at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:1029)
        at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:61)
        at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation$.getSchema(JDBCRelation.scala:210)
        at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:35)
        at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318)
        at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
        at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211)
        at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167)
        at org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.scala:238)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
        at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
        at py4j.Gateway.invoke(Gateway.java:282)
        at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
        at py4j.commands.CallCommand.execute(CallCommand.java:79)
        at py4j.GatewayConnection.run(GatewayConnection.java:238)
        at java.lang.Thread.run(Thread.java:748)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
jdbc中的文件“/pathto/python3.6/site packages/pyspark/sql/readwriter.py”,第560行
返回self.\u df(self.\u jreader.jdbc(url,table,jprop))
文件“/pathto/python3.6/site packages/py4j/java_gateway.py”,第1257行,在__
回答,self.gateway\u客户端,self.target\u id,self.name)
文件“/pathto/python3.6/site packages/pyspark/sql/utils.py”,第63行,deco格式
返回f(*a,**kw)
文件“/pathto/python3.6/site packages/py4j/protocol.py”,第328行,在get_return_值中
格式(目标id,“.”,名称),值)
py4j.protocol.Py4JJavaError:调用o39.jdbc时出错。
:java.sql.SQLException:关键字“SELECT”附近的语法不正确。
位于net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
位于net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2988)
位于net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2421)
位于net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:671)
位于net.sourceforge.jtds.jdbc.jtdstatement.executeSQLQuery(jtdstatement.java:505)
位于net.sourceforge.jtds.jdbc.jtdsprearedstatement.executeQuery(jtdsprearedstatement.java:1029)
位于org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:61)
位于org.apache.spark.sql.execution.datasources.jdbc.jdbcrations$.getSchema(jdbcrations.scala:210)
位于org.apache.spark.sql.execution.datasources.jdbc.jdbrelationprovider.createRelation(jdbrelationprovider.scala:35)
位于org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318)
位于org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211)
位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167)
位于org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.scala:238)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
位于py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
在py4j.Gateway.invoke处(Gateway.java:282)
位于py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
在py4j.commands.CallCommand.execute(CallCommand.java:79)
在py4j.GatewayConnection.run处(GatewayConnection.java:238)
运行(Thread.java:748)