Не найдена ошибка класса при подключении к снежинке с локальной машины pyspark - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь подключиться к снежинке из Pyspark на моей локальной машине.

Мой код выглядит следующим образом.

    from pyspark import SparkConf, SparkContext
    from pyspark.sql import SQLContext
    from pyspark.sql.types import *
    from pyspark import SparkConf, SparkContext

    sc = SparkContext("local", "sf_test")
    spark = SQLContext(sc)
    spark_conf = SparkConf().setMaster('local').setAppName('sf_test')

    sfOptions = {
      "sfURL" : "someaccount.some.address",
      "sfAccount" : "someaccount",
      "sfUser" : "someuser",
      "sfPassword" : "somepassword",
      "sfDatabase" : "somedb",
      "sfSchema" : "someschema",
      "sfWarehouse" : "somedw",
      "sfRole" : "somerole",
    }

SNOWFLAKE_SOURCE_NAME = "net.snowflake.spark.snowflake"

Я получаю сообщение об ошибке при запуске этого конкретного фрагмента кода .

df = spark.read.format(SNOWFLAKE_SOURCE_NAME).options(**sfOptions).option("query","""select * from 
 "PRED_ORDER_DEV"."SALES"."V_PosAnalysis" pos 
    ORDER BY pos."SAPAccountNumber", pos."SAPMaterialNumber" """).load()

Py4JJavaError: Произошла ошибка при вызове o115.load. : java .lang.ClassNotFoundException: Не удалось найти источник данных: net .snowflake.spark.snowflake. Пожалуйста, найдите пакеты в http://spark.apache.org/third-party-projects.html в орг. apache .spark. sql .execution.datasources.DataSource $ .lookupDataSource (DataSource. scala: 657) в орг. apache. spark. sql .DataFrameReader.load (DataFrameReader. scala: 194) в орг. apache .spark. sql .DataFrameReader.load (DataFrameReader. scala: 167)

Я загрузил файлы коннектора и jdb c jar и добавил их в CLASSPATH

pyspark --packages net.snowflake:snowflake-jdbc:3.11.1,net.snowflake:spark-snowflake_2.11:2.5.7-spark_2.4
CLASSPATH = C:\Program Files\Java\jre1.8.0_241\bin;C:\snowflake_jar

Я хочу иметь возможность подключаться к снежинке и читать данные с помощью Pyspark. Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 20 января 2020

Для запуска приложения pyspark вы можете использовать spark-submit и передать JAR-файлы под опцией --packages. Я предполагаю, что вы хотите запустить режим клиента, поэтому вы передаете это параметру --deploy-mode и, наконец, добавляете имя вашей программы pyspark.

Примерно так:

spark-submit --packages net.snowflake:snowflake-jdbc:3.11.1,net.snowflake:spark-snowflake_2.11:2.5.7-spark_2.4 --deploy-mode client spark-snowflake.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...