我正在将Azure DataBricks笔记本与Azure库一起使用,以获取Blob存储中的文件列表。该任务已安排好,完成工作后将终止集群,并以新的运行再次开始。
我正在使用Azure 4.0.0库(https://pypi.org/project/azure/)
有时我会收到错误消息:
而且很少:
我找到了一种解决方案,例如卸载openssl或azure库,重新启动群集并重新安装,但是由于可能需要处理更长的任务等,因此可能无法重新启动群集。
我还尝试在初始化脚本中安装/升级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)
谢谢
答案 0 :(得分:1)
此问题的解决方案是将Azure库降级为3.0.0。
Azure v4似乎与Databricks中的某些初始库有冲突。
答案 1 :(得分:0)
此问题也与pyOpenSSL软件包都有链接。降级到18.0.0版对我有用。我在群集初始化
时将以下脚本用作初始化脚本first_name = request.GET.get('first_name')
last_name = request.GET.get('last_name')
if first_name:
user_obj = User.objects.filter(role_id=USER_ROLE['employer'], first_name=first_name)
if last_name:
user_obj = User.objects.filter(role_id=USER_ROLE['employer'], last_name=last_name)
答案 2 :(得分:0)
运行6或更高版本的databricks现在应该可以解决此问题。