提供Blob类型以从PySpark读取Azure附加Blob

时间:2019-06-28 02:04:07

标签: python azure pyspark azure-storage-blobs 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容器的公共访问和匿名访问。
    • 在路径中添加了两个jars 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数据帧应该不那么困难。我在做什么错了?

0 个答案:

没有答案