ここから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)