簡體   English   中英

如何在 Python 3 中的 Databricks 中使用 python 雪花連接器連接到雪花?

[英]How to connect to Snowflake using python snowflake connector from within Databricks in Python 3?

當我嘗試將 snowflake-sqlalchemy 庫附加到 Databricks 中的 Python 3 集群時,它破壞了我的 Python 構建,並且在我安裝后續庫時出現以下錯誤:

AttributeError: cffi 庫“_openssl”沒有名為“Cryptography_HAS_ED25519”的函數、常量或全局變量

我曾嘗試將最新版本的 Cryptography 庫分別附加到集群,但這給了我同樣的問題。 我認為這可能與以下鏈接有關:

從 azure-databricks-notebook-message-openssl-has-no-function-constant-or-global-variable-named-cryptography 連接到雪花

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.*

有什么方法可以卸載 Databricks 中預裝的密碼學 1.5 python 庫,以便我可以使用新的目錄結構重新安裝最新版本的密碼學 (2.5)?

過時的庫:

%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

我已經找到了我的問題的答案。

該問題是由 Databricks 中的 openssl 版本過時導致的,snowflake-sqlalchemy 無法使用它。

解決方法如下:

  1. 升級畫中畫

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

  2. 卸載 pyopenssl

    %sh /databricks/python/bin/pip 卸載 pyopenssl -y

  3. 安裝pyopenssl

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

  4. 安裝雪花-sqlalchemy

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

這個問題的答案很有幫助: Python AttributeError: 'module' object has no attribute 'SSL_ST_INIT'

我使用以下代碼創建了一個 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)

文件中的最后一個命令更新所有過時的包,如下所示: Upgrading all packages with pip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM