gpt4 book ai didi

azure - 无法从 Azure Blob 读取 : "org. apache.hadoop.fs.azure.AzureException:找不到 Azure 存储帐户的凭据

转载 作者:行者123 更新时间:2023-12-02 06:57:01 24 4
gpt4 key购买 nike

我有一个私有(private) Azure 存储帐户并在本地使用 PySpark,我想读取 Blob。设置如下:

access_key = <storage-account-access-key>
spark = SparkSession.builder.master('local').appName('app').getOrCreate()
spark.conf.set("fs.azure.account.<storage-account-name>.blob.core.windows.net", access_key)
sc = spark.sparkContext
sc._conf.setAll([("fs.azure.account.key.<storage-acccount-name>.blob.core.windows.net", access_key)])

csv_raw = sc.textFile('wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/dir')
print(csv_raw.collect())

我使用spark.sparkContext.textFile()而不是spark.read.load()的原因是什么?我需要将数据作为 RDD 读入,以在转换为具有模式的数据帧之前进行一些数据清理/解析。这很奇怪,因为我可以使用 Spark.read.load() 将数据作为数据帧读取,因此 Spark session 中的设置是正确的。如上面的代码所示,我确实在sparkContext中手动设置了配置,以确保它在运行textFile方法之前具有此参数。但是,在使用spark.sparkContext.textFile()时出现身份验证错误:

“org.apache.hadoop.fs.azure.AzureException:在配置中找不到帐户的凭据...并且其容器...无法使用匿名凭据访问。”

请假设所有 jar 文件(hadoop-azure-3.3.0.jar、azure-storage-8.6.5.jar)均已使用 Spark-submit 正确加载,并请注意我使用的是 Spark 版本 3.1.1。

提前谢谢您!

最佳答案

对于 RDD API,您需要提供 Hadoop 配置 - 您现在使用的配置仅用于 Dataframe/Dataset API(请参阅 Databricks docs 作为引用)。

所以代替 fs.azure.account.key.<storage-acccount-name>.blob.core.windows.net您需要添加spark.hadoop给它:spark.hadoop.fs.azure.account.key.<storage-acccount-name>.blob.core.windows.net

关于azure - 无法从 Azure Blob 读取 : "org. apache.hadoop.fs.azure.AzureException:找不到 Azure 存储帐户的凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69535103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com