Как подключить Teradata с помощью Pyspark - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь подключить сервер teradata через PySpark.

Мой код CLI, как показано ниже,

from pyspark.sql import SparkSession
spark=SparkSession.builder
                  .appName("Teradata connect")
                  .getOrCreate()
df = sqlContext.read
               .format("jdbc")
               .options(url="jdbc:teradata://xy/",
                        driver="com.teradata.jdbc.TeraDriver",
                        dbtable="dbname.tablename",
                        user="user1",password="***")
               .load()

Что дает ошибку,

py4j.protocol.Py4JJavaError: Произошла ошибка при вызове o159.load. : java.lang.ClassNotFoundException: com.teradata.jdbc.TeraDriver

Я думаю, что для решения этой проблемы мне нужно добавить jar terajdbc4.jar и `tdgssconfig.jar.

В Scala, чтобы добавить банку, мы можем использовать

    sc.addJar("<path>/jar-name.jar")

Если я использую то же самое для PySpark, у меня будет ошибка,

AttributeError: у объекта SparkContext нет атрибута addJar.

или

AttributeError: у объекта 'SparkSession' нет атрибута 'addJar'

Как мне добавить баночку terajdbc4.jar и tdgssconfig.jar?

1 Ответ

0 голосов
/ 03 мая 2019

Попробуйте прочитать этот пост, в котором объясняется, как добавить драйверы jdbc в pyspark.

Как добавить драйверы jdbc в classpath при использовании PySpark?

Приведенный выше пример предназначен для postgres и docker, но ответ должен работать для вашего сценария. Обратите внимание, вы правы относительно файлов драйвера. Большинство драйверов JDBC находятся в одном файле, но Teradata разбивает его на две части. Я думаю, что один является фактическим драйвером, а другой (tdgss) содержит в себе средства безопасности. Оба файла должны быть добавлены в путь к классам, чтобы он работал.

Либо просто Google "Как добавить драйверы JDBC в Pyspark".

...