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

标签 python azure pyspark azure-blob-storage

最终目标是能够将 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/

相关文章:

python - 将排序应用于 pandas groupby 操作

python - SqlAlchemy + Mysql : Unable to drop tables due to IntegrityError

c# - Web API (.NET Framework) Azure AD 身份验证始终返回 401 未经授权

apache-spark - Spark 写入 Elasticsearch 性能低下

python - Pyspark:将 repartitionAndSortWithinPartitions 与多个排序条件一起使用

json - 将 JSON 对象数组转换为 pyspark 中的字符串

python - 创建新的Dataframe数据切片问题

python __getattr__ 自动完成

Azure cosmos db gremline批量导入csv

azure - 来自 Azure 认知搜索的数据工厂副本