Соединитель Snowflake с ошибкой пакетов JAR pysparkPython

Программы на Python
Ответить
Anonymous
 Соединитель Snowflake с ошибкой пакетов JAR pyspark

Сообщение Anonymous »

Я прочитал несколько веток по этому вопросу, но не нашел однозначного ответа.
Я запускаю локально в контейнере (mac os + podman)
scala: 'version 2.12.17'

pyspark: 3.4.0

spark-3.4.0

python 3.11.4

Я запускаю контейнер, определенный в Compose (источник: https://github.com/mzrks/pyspark-devcon ... vcontainer)version: '3'

services:
app:
build:
context: ..
dockerfile: .devcontainer/Dockerfile
args:
PYTHON_VARIANT: 3.11
JAVA_VARIANT: 17
volumes:
- ..:/workspace:cached
command: sleep infinity

pyspark:
image: jupyter/pyspark-notebook:spark-3.4.0
environment:
- JUPYTER_ENABLE_LAB=yes
ports:
- 8888:8888

У меня есть почти все, что я мог найти, чтобы получить эту работу:
from pyspark.sql import SparkSession

## I have also tried below

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages net.snowflake:snowflake-jdbc:3.17.0,net.snowflake:spark-snowflake_2.12:2.16.0-spark_3.4 pyspark-shell'

## with and without what I have put here in packages_so and repository

packages_so = 'net.snowflake:snowflake-jdbc:3.4.0,net.snowflake:spark-snowflake_2.12:2.11.0-spark_3.4'
repository = "https://repo1.maven.org/maven2"

## I have tried multiple versions of above, I dont really get what should the version
## numbers read like? other than the spark_3.4 means spark version?

spark = ( SparkSession
.builder
.master("local[*]")
.appName("spark_docker")
# .config("spark.jars.packages", "net.snowflake:snowflake-jdbc:3.17.0,net.snowflake:spark-snowflake_2.12:2.16.0-spark_3.4")
.config("spark.jars.packages", packages_so) \
.config("spark.jars.repositories", repository)
.getOrCreate()
)

sf_options = {
"sfURL": "url",
"sfUser": "user",
"sfPassword": "pass",
"sfDatabase": "SNOWFALL",
"sfSchema": "PIPELINE",
"sfWarehouse": "COMPUTE_WH",
"sfRole": "role",
}
SNOWFLAKE_SOURCE_NAME = "snowflake" # also "net.snowflake.spark.snowflake"
sdf: DataFrame = (
spark.read.format(SNOWFLAKE_SOURCE_NAME)
.options(**sf_options)
.option("dbtable", "SNOWFALL.PIPELINE.MYTABLE")
.option("fetchsize", "10000")
.load()
)

sdf.show(vertical=True, n=2)

spark.stop()


Я также пытался запустить в своей оболочке контейнера (источник: https://www.phdata.io/blog/how-to-conne ... ing-spark/):
spark-shell --packages net.snowflake:snowflake-jdbc:3.17.0,spark-snowflake_2.12:2.16.0-spark_3.4

Я просто не понимаю, как добавить файл JAR в этот экземпляр, чтобы соединение работало
и моя ошибка всегда приводит к следующему:
Py4JJavaError: An error occurred while calling o152.load.
: org.apache.spark.SparkClassNotFoundException: [DATA_SOURCE_NOT_FOUND] Failed to find the data source: snowflake. Please find packages at `https://spark.apache.org/third-party-projects.html`.


Подробнее здесь: https://stackoverflow.com/questions/791 ... ages-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»