gpt4 book ai didi

python - 提供 blob 类型以从 PySpark 读取 Azure 追加 blob

转载 作者:行者123 更新时间:2023-12-02 07:25:03 24 4
gpt4 key购买 nike

最终目标是能够将 Azure 容器中的数据读取到 PySpark 数据帧中。

到目前为止的步骤

到目前为止我所遵循的步骤:

  • 编写此代码

    spark = SparkSession(SparkContext())
    spark.conf.set(
    "fs.azure.account.key.%s.blob.core.windows.net" % AZURE_ACCOUNT_NAME,
    AZURE_ACCOUNT_KEY
    )
    spark.conf.set(
    "fs.wasbs.impl",
    "org.apache.hadoop.fs.azure.NativeAzureFileSystem"
    )

    container_path = "wasbs://%s@%s.blob.core.windows.net" % (
    AZURE_CONTAINER_NAME, AZURE_ACCOUNT_NAME
    )
    blob_folder = "%s/%s" % (container_path, AZURE_BLOB_NAME)
    df = spark.read.format("text").load(blob_folder)
    print(df.count())
    • 设置对我的 Azure 容器的公共(public)访问和匿名访问。
    • 添加了两个 jar hadoop-azure-2.7.3.jarazure-storage-2.2.0.jar到路径。

问题

但现在我遇到了这个错误:Caused by: com.microsoft.azure.storage.StorageException: Incorrect Blob type, please use the correct Blob type to access a blob on the server. Expected BLOCK_BLOB, actual UNSPECIFIED. 。我无法找到任何谈论/解决此问题的内容。我发现的最接近的是 this这不起作用/已经过时了。

编辑

我发现azure-storage-2.2.0.jar不支持APPEND_BLOB 。我升级到azure-storage-4.0.0.jar它将错误从 Expected BLOCK_BLOB, actual UNSPECIFIED. 更改为至Expected BLOCK_BLOB, actual APPEND_BLOB. 。有谁知道如何传递期望的正确类型?

有人可以帮我解决这个问题吗?

我对使用 Azure 的专业知识很少,但我认为读取和创建 Spark 数据帧应该不会这么困难。我做错了什么?

最佳答案

您正在尝试读取 WASB 不支持的追加 blob。

我认为你应该尝试使用 abfss,它确实支持它。但我不知道在自定义 Spark 环境中使用会有多困难。

例如,以下是我们如何使用 PySpark 在 Databricks Notebook 中执行此操作:

df = spark.read.format("csv").load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")

希望这能有所帮助,你的帖子已经很老了,但在使用 abfss 之前我确实遇到了同样的问题......所以希望它能对其他人有所帮助。

关于python - 提供 blob 类型以从 PySpark 读取 Azure 追加 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56800137/

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