[英]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 庫分別附加到集群,但這給了我同樣的問題。 我認為這可能與以下鏈接有關:
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 無法使用它。
解決方法如下:
升級畫中畫
%sh /databricks/python/bin/pip install --upgrade pip
卸載 pyopenssl
%sh /databricks/python/bin/pip 卸載 pyopenssl -y
安裝pyopenssl
%sh /databricks/python/bin/pip install --upgrade pyopenssl
安裝雪花-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.