SQLServer
Spark
python3

SparkからMSのSQLserverにアクセスしたい

ここからmssql-jdbc-6.2.2.jre8.jarをダウンロード
https://www.microsoft.com/en-us/download/details.aspx?id=55539
spark-submitするときにつける

spark-submit --driver-class-path mssql-jdbc-6.2.2.jre8.jar main.py

Sparkプログラムの中からsqlserverに接続

main.py
jdbc_url = 'jdbc:sqlserver://<sqlserver address>:1433;database=<databasename>;user=<userid>;password=<password>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;'

table = spark.read.jdbc(url=jdbc_url, table='テーブル名')

ちなみにdataframe.write.jdbc()の関数は超遅いので使わない用がいい。tsvなりparquetなりファイルに吐き出して転送することにした。

ちなみにtable名にクエリを書くこともできる。転送量を削減できる。

pushdown_query = """
(select * 
from yourtable
WHERE 条件
) tmptable
"""
appverctrl = spark.read.jdbc(jdbc_url,pushdown_query)