Я пытаюсь получить данные с сервера SQL в таблицу Hive, используя Spark в блокноте Zeppelin.
Я пытаюсь запустить следующий код:
%pyspark
from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.sql.dataframe import DataFrame
from pyspark.sql.functions import *
spark = SparkSession.builder \
.appName('sample') \
.getOrCreate()
#set url, table, etc.
df = spark.read.format('jdbc') \
.option('url', url) \
.option('driver', 'com.microsoft.sqlserver.jdbc.SQLServerDriver') \
.option('dbtable', table) \
.option('user', user) \
.option('password', password) \
.load()
Однако я продолжаю получать исключение:
...
Py4JJavaError: An error occurred while calling o81.load.
: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
...
Я пытался выяснить это весь день, и я считаю, что что-то не так с тем, как я пытаюсь настроить драйвер. У меня есть драйвер под /tmp/sqljdbc42.jar
на экземпляре. Не могли бы вы объяснить, как я могу сообщить Spark, где находится этот драйвер? Я пробовал много разных способов как через оболочку, так и через редактор интерпретатора.
Спасибо!
EDIT
Я также должен отметить, что я загрузил банку в свой экземпляр через оболочку Цеппелина (% sh), используя
curl -o /tmp/sqljdbc42.jar http://central.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar
pyspark --driver-class-path /tmp/sqljdbc42.jar --jars /tmp/sqljdbc42.jar