Im Moment habe ich den folgenden Python-Code in einer Tabelle von einem lokalen SQL Server db in Pandas zu lesen:Pyspark-Äquivalent von Pyodbc?
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)
Dieser Code funktioniert, aber jetzt würde Ich mag die gleiche Sache in Pyspark zu tun. Was ist dieser Code in Pyspark?
Ich habe versucht, die folgenden:
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()
Dies gibt java.lang.ClassNotFoundException: {SQL SERVER}
. Während dieses Prozesses habe ich auch einen Fehler bekommen, weil ich keinen "passenden Treiber" finden konnte, obwohl ich denke, dass ich das durch Ändern von os.environ
behoben habe. Jede Hilfe würde sehr geschätzt werden!
Sie meinen offensichtlich "pyspark äquivalent pyodbc" ... – desertnaut