Как подключиться к Snowflake с помощью коннектора Python снежинки из Databricks в Python 3? - PullRequest
0 голосов
/ 24 января 2019

Когда я пытаюсь присоединить библиотеку снежинка-sqlalchemy к кластеру Python 3 в Databricks, это нарушает мою сборку Python и выдает следующую ошибку при установке последующих библиотек:

AttributeError: библиотека cffi '_openssl' не имеет функции, константы или глобальная переменная с именем 'Cryptography_HAS_ED25519'

Я попытался подключить последнюю версию библиотеки криптографии к кластеру отдельно, но это вызвало у меня ту же проблему. Я думаю, что это может быть связано со следующими ссылками:

подключение к снежинке-из-лазурного-databricks-ноутбук-сообщение-OpenSSL-есть-нет-функцию постоянной или глобальный-переменное с именем-криптография

https://github.com/snowflakedb/snowflake-connector-python/issues/32

Во второй ссылке упоминается обходной путь:

The workaround is:
Uninstall cryptography by running pip uninstall cryptography
Delete the directory .../site-packages/cryptography/ manually
Reinstall snowflake-connector-python

Looks like the directory structure of cryptography changed since 1.7.2.*

Есть ли какой-нибудь способ удалить предустановленную библиотеку cryptography 1.5 python из Databricks, чтобы я мог переустановить последнюю версию cryptography (2.5) с новой структурой каталогов?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Я нашел ответ на мою проблему.

Проблема вызвана тем, что версия openssl в Databricks слишком устарела, чтобы снежинка-sqlalchemy могла с ней работать.

Решение выглядит следующим образом:

  1. Обновление PIP

    % sh / databricks / python / bin / pip install --upgrade pip

  2. Удалить pyopenssl

    % sh / databricks / python / bin / pip uninstall pyopenssl -y

  3. Установить pyopenssl

    % sh / databricks / python / bin / pip install --upgrade pyopenssl

  4. Установка снежинки-sqlalchemy

    % sh / databricks / python / bin / pip install - обновить снежинку-sqlalchemy

Ответ на этот вопрос был полезен: Python AttributeError: у объекта 'module' нет атрибута 'SSL_ST_INIT'

Я создал файл инициализации, используя следующий код:

dbutils.fs.mkdirs("dbfs:/databricks/init/")

dbutils.fs.put("dbfs:/databricks/init/sf-initiation.sh" ,"""
#!/bin/bash
/databricks/python/bin/pip install --upgrade pip
/databricks/python/bin/pip uninstall pyopenssl -y
/databricks/python/bin/pip install --upgrade pyopenssl
/databricks/python/bin/pip install --upgrade snowflake-sqlalchemy
""", True)

Последняя команда в файле обновляет все устаревшие пакеты, как показано в: Обновление всех пакетов с pip

0 голосов
/ 24 января 2019

Устаревшие библиотеки:

%sh sudo apt-get install python3-pip -y

Далее:

%sh pip3 install --upgrade snowflake-connector-python

Подробнее см. https://datathirst.net/blog/2019/1/11/databricks-amp-snowflake-python-errors.

...