我正在尝试使用pyodbc连接MSSQL数据库。我可以使用pyodbc获得连接,但当我尝试启动PySpark会话时,我收到了一个Py4JJavaError,其中包含以下消息:
调用None.org.apache.spark.api.java.JavaSparkContext时出错。\n:org.apache.hadoop.security.KerberosAuthException:登录失败:javax.security.auth.login.LoginException:找不到com.ibm.security.auth.module的登录模块。
这是我的代码的样子。我还没有能够通过spark = sqlContext.sparkSession
没有错误。我想创建一个spark会话,然后查询一个表到spark Dataframe 。
appName = "PySpark SQL Server Example - via ODBC"
master = "local"
conf = SparkConf() \
.setAppName(appName) \
.setMaster(master)
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
spark = sqlContext.sparkSession
server = 'exampleserver.windows.net'
database = 'exampledatabase'
username = 'exampleusername'
password = 'examplepassword'
driver= '{ODBC Driver 17 for SQL Server}'
conn = pyodbc.connect(f'DRIVER='+driver+';SERVER=tcp:'+server+';PORT=1433;DATABASE='+database+';Trusted_Connection=yes')
query = f"SELECT TOP 3 ID, CountryId FROM dbo.Address"
pdf = pd.read_sql(query, conn)
sparkDF = spark.createDataFrame(pdf)
sparkDF.show()
1条答案
按热度按时间cgvd09ve1#
您收到的错误信息似乎与您的机器上的不正确凭据或配置有关。我建议您仔细检查数据库的用户名和密码是否正确。但我必须建议您在解决PySpark问题之前,首先检查是否可以单独使用pyodbc连接到MSSQL数据库。要做到这一点,请尝试运行pd.read_sql命令从数据库中提取数据并验证其是否有效