Как мне подключить Spark к драйверу JDBC в Zeppelin? - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь получить данные с сервера 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

Ответы [ 2 ]

0 голосов
/ 30 июня 2019

Вот как я это исправил:

  1. scp jar драйвера на узел драйвера кластера

  2. Перейдите к интерпретатору Zeppelin и прокрутите до раздела Spark, затем нажмите «Изменить».

  3. Запишите полный путь к банке под артефактами, например. /home/Hadoop/mssql-jdbc.jar и ничего больше.

  4. Нажмите сохранить.

Тогда тебе должно быть хорошо!

0 голосов
/ 28 августа 2018

Вы можете добавить его через веб-интерфейс в настройках интерпретатора следующим образом:

  • Нажмите Интерпретатор в меню

  • Нажмите кнопку «Редактировать» в интерпретаторе Spark

  • Добавить путь к банке в поле артефакта

  • Затем просто сохраните и перезапустите интерпретатор.

...