Skip to main content
 首页 » 编程设计

python之Pyspark 等同于 Pyodbc

2025年01月19日35davidwang456

<分区>

我目前有以下 Python 代码可以将本地 SQL Server 数据库中的表读入 Pandas:

import pandas as pd 
import pyodbc 
 
# Connect to DB 
server = 'server' 
db = 'db' 
 
conn = pyodbc.connect('DRIVER={SQL SERVER}; SERVER=' + server + '; DATABASE=' + db + '; TRUSTED_CONNECTION=yes') 
cursor = conn.cursor() 
 
table = 'table' 
df = pd.read_sql('Select * From ' + table, conn) 

该代码有效,但现在我想在 Pyspark 中做同样的事情。 Pyspark 中这段代码的等效项是什么?

我尝试了以下方法:

import findspark 
import os 
from pyspark.sql import SparkSession 
from pyspark.sql.functions import * 
 
# didn't know which of these would work so tried both 
os.environ['SPARK_CLASSPATH'] = 'path/to/sqljdbc42.jar' 
os.environ['driver-class-path'] = 'path/to/sqljdbc42.jar' 
 
findspark.init('C:/spark/spark') 
 
spark = SparkSession \ 
        .builder \ 
        .appName("SparkCoreTest") \ 
        .getOrCreate() 
 
sc = spark.sparkContext 
sqlctx = SQLContext(sc) 
 
server = 'server' 
db = 'db' 
url = 'jdbc:sqlserver//' + server + ';databaseName=' + db 
table = 'table' 
properties = {'driver' : 'com.microsoft.sqlserver.jdbc.SQLServerDriver'} 
 
df = sqlctx.read.format('jdbc').options(url=url, dbtable=table, driver='{SQL SERVER}').load() 

这给出了 java.lang.ClassNotFoundException: {SQL SERVER}。在整个过程中,我还遇到了由于无法找到“合适的驱动程序”而导致的错误,尽管我认为我已经通过更改 os.environ 修复了这些错误。任何帮助将不胜感激!