Подключение от Spark к снежинке - PullRequest
0 голосов
/ 10 мая 2018

Я пишу это не для того, чтобы задать вопрос, а для того, чтобы поделиться знаниями. Я использовал Spark для подключения к снежинке. Но я не мог получить доступ к снежинке. Казалось, что-то не так с внутренним драйвером JDBC в блоках данных.

Здесь была ошибка, которую я получил.

java.lang.NoClassDefFoundError:net/snowflake/client/jdbc/internal/snowflake/common/core/S3FileEncryptionMaterial

Я перепробовал много версий драйверов снежинки jdbc и драйверов снежинки. Казалось, что я могу подобрать правильный. И я поднял билет на поддержку блоков данных и получил от них решение. Теперь это работает хорошо.
Шаг 1: Создать кластер с версией Spark - 2.3.0. и версия Scala - 2.11
Шаг 2: Прикрепил снежинку-jdbc-3.5.4.jar к кластеру. https://mvnrepository.com/artifact/net.snowflake/snowflake-jdbc/3.5.4
Шаг 3: Подключил драйвер spark-snowke_2.11-2.3.2 к кластеру. https://mvnrepository.com/artifact/net.snowflake/spark-snowflake_2.11/2.3.2

Вот пример кода.

val SNOWFLAKE_SOURCE_NAME = "net.snowflake.spark.snowflake"

val sfOptions = Map(
    "sfURL" -> "<snowflake_url>",
    "sfAccount" -> "<your account name>",
    "sfUser" -> "<your account user>",
    "sfPassword" -> "<your account pwd>",
    "sfDatabase" -> "<your database name>",
    "sfSchema" -> "<your schema name>",
    "sfWarehouse" -> "<your warehouse name>",
    "sfRole" -> "<your account role>",
    "region_id"-> "<your region name, if you are out of us region>"
)

val df: DataFrame = sqlContext.read
    .format(SNOWFLAKE_SOURCE_NAME)
    .options(sfOptions)
    .option("dbtable", "<your table>")
    .load()

Если у вас возникла такая же проблема, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...