Databricks cluster does not initialize Azure library with error: module 'lib' has no attribute 'SSL_ST_INIT'
Databricks cluster does not initialize Azure library with error: module 'lib' has no attribute 'SSL_ST_INIT'
我正在使用 Azure DataBricks notebook 和 Azure 库来获取 Blob 存储中的文件列表。此任务已安排,集群在完成作业后终止,并以新的 运行.
重新启动
我正在使用 Azure 4.0.0 库 (https://pypi.org/project/azure/)
有时我会收到错误消息:
- AttributeError: 模块 'lib' 没有属性 'SSL_ST_INIT'
很少还有:
- AttributeError:cffi 库“_openssl”没有函数、常量或
名为 'CRYPTOGRAPHY_PACKAGE_VERSION'
的全局变量
我已经找到了解决方案,卸载openssl或azure库,重启集群并重新安装,但重启集群可能无法实现,因为它可能需要处理更长的任务等
我也尝试在初始化脚本中install/upgrade openSSL 16.2.0,但它无济于事,并且开始与默认情况下位于 Databricks 集群中的另一个 openSSL 库发生冲突
我可以用它做什么?
有从 Blob 存储中获取文件列表的代码:
import pandas as pd
import re
import os
from pyspark.sql.types import *
import azure
from azure.storage.blob import BlockBlobService
import datetime
import time
r = []
marker = None
blobService = BlockBlobService(accountName,accountKey)
while True:
result = blobService.list_blobs(sourceStorageContainer, prefix = inputFolder, marker=marker)
for b in result.items:
r.append(b.name)
if result.next_marker:
marker = result.next_marker
else:
break
print(r)
谢谢
此问题的解决方案是将 Azure 库降级到 3.0.0。
看起来 Azure v4 与 Databricks 中的一些初始库有冲突。
这个问题也有一个 link 与 pyOpenSSL 包有关。降级到版本 18.0.0 对我有用。我在集群初始化时使用以下脚本作为初始化脚本
dbutils.fs.put("/databricks/script/pyOpenSSL-install.sh","""
#!/bin/bash
/databricks/python/bin/pip uninstall pyOpenSSL -y
/databricks/python/bin/pip install pyOpenSSL==18.0.0
""", True)
运行 databricks runtime 6 或更高版本现在应该可以解决这个问题。
我正在使用 Azure DataBricks notebook 和 Azure 库来获取 Blob 存储中的文件列表。此任务已安排,集群在完成作业后终止,并以新的 运行.
重新启动我正在使用 Azure 4.0.0 库 (https://pypi.org/project/azure/)
有时我会收到错误消息:
- AttributeError: 模块 'lib' 没有属性 'SSL_ST_INIT'
很少还有:
- AttributeError:cffi 库“_openssl”没有函数、常量或 名为 'CRYPTOGRAPHY_PACKAGE_VERSION' 的全局变量
我已经找到了解决方案,卸载openssl或azure库,重启集群并重新安装,但重启集群可能无法实现,因为它可能需要处理更长的任务等
我也尝试在初始化脚本中install/upgrade openSSL 16.2.0,但它无济于事,并且开始与默认情况下位于 Databricks 集群中的另一个 openSSL 库发生冲突
我可以用它做什么?
有从 Blob 存储中获取文件列表的代码:
import pandas as pd
import re
import os
from pyspark.sql.types import *
import azure
from azure.storage.blob import BlockBlobService
import datetime
import time
r = []
marker = None
blobService = BlockBlobService(accountName,accountKey)
while True:
result = blobService.list_blobs(sourceStorageContainer, prefix = inputFolder, marker=marker)
for b in result.items:
r.append(b.name)
if result.next_marker:
marker = result.next_marker
else:
break
print(r)
谢谢
此问题的解决方案是将 Azure 库降级到 3.0.0。
看起来 Azure v4 与 Databricks 中的一些初始库有冲突。
这个问题也有一个 link 与 pyOpenSSL 包有关。降级到版本 18.0.0 对我有用。我在集群初始化时使用以下脚本作为初始化脚本
dbutils.fs.put("/databricks/script/pyOpenSSL-install.sh","""
#!/bin/bash
/databricks/python/bin/pip uninstall pyOpenSSL -y
/databricks/python/bin/pip install pyOpenSSL==18.0.0
""", True)
运行 databricks runtime 6 或更高版本现在应该可以解决这个问题。