Pyspark Azure DataRicks数据帧写入导致作业中止错误

Pyspark Azure DataRicks数据帧写入导致作业中止错误,pyspark,azure-databricks,pyspark-dataframes,azure-data-lake-gen2,Pyspark,Azure Databricks,Pyspark Dataframes,Azure Data Lake Gen2,我正在尝试将数据写入csv文件,并将该文件存储在Azure data Lake Gen2上,然后遇到作业中止错误消息。这段代码以前也可以正常工作 错误消息: 代码: 我将解决方案总结如下 如果您想访问Azure DataRicks中的Azure DataLake gen2,您有两种选择 将Azure DataLake gen2安装为Azure databricks的文件系统。完成此操作后,您可以使用路径/mnt/读取和写入文件。我们只需要运行一次代码 a。创建服务主体并将存储Blob数据参与者分

我正在尝试将数据写入csv文件,并将该文件存储在Azure data Lake Gen2上,然后遇到作业中止错误消息。这段代码以前也可以正常工作

错误消息:

代码:


我将解决方案总结如下

如果您想访问Azure DataRicks中的Azure DataLake gen2,您有两种选择

  • 将Azure DataLake gen2安装为Azure databricks的文件系统。完成此操作后,您可以使用路径
    /mnt/
    读取和写入文件。我们只需要运行一次代码

    a。创建服务主体并将存储Blob数据参与者分配给Data Lake Storage Gen2存储帐户范围内的sp

     az login
    
     az ad sp create-for-rbac -n "MyApp" --role "Storage Blob Data Contributor" \
    --scopes /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>
    
    az登录
    az ad sp为rbac创建-n“MyApp”--角色“存储Blob数据贡献者”\
    --作用域/订阅//资源组//提供程序/Microsoft.Storage/storageAccounts/
    
    b。代码

     configs = {"fs.azure.account.auth.type": "OAuth",
      "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
      "fs.azure.account.oauth2.client.id": "<appId>",
      "fs.azure.account.oauth2.client.secret": "<clientSecret>",
      "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<tenant>/oauth2/token",
      "fs.azure.createRemoteFileSystemDuringInitialization": "true"}
    
     dbutils.fs.mount(
        source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/folder1",
        mount_point = "/mnt/flightdata",
        extra_configs = configs)
    
    configs={“fs.azure.account.auth.type”:“OAuth”,
    “fs.azure.account.oauth.provider.type”:“org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider”,
    “fs.azure.account.oauth2.client.id”:”


  • 有关更多详细信息,请参阅

    能否共享您尝试执行的代码?Hi@HimanshuSinha msft,感谢您的回复。请查找更新了代码的OP。您可以告诉我如何在DataRicks中访问Azure Data Lake Gen2吗?是否添加了
    spark.conf.set(“fs.Azure.account.key..blob.core.windows.net“,”)
    到您的code@paone此外,如果您使用ADLS Gen2,则需要使用
    abfss
    协议来访问文件,并将
    spark.conf.set(“fs.azure.account.key..dfs.core.windows.net”,”)
    添加到您的代码中进行身份验证。有关详细信息,请参阅。
     az login
    
     az ad sp create-for-rbac -n "MyApp" --role "Storage Blob Data Contributor" \
    --scopes /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>
    
     configs = {"fs.azure.account.auth.type": "OAuth",
      "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
      "fs.azure.account.oauth2.client.id": "<appId>",
      "fs.azure.account.oauth2.client.secret": "<clientSecret>",
      "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<tenant>/oauth2/token",
      "fs.azure.createRemoteFileSystemDuringInitialization": "true"}
    
     dbutils.fs.mount(
        source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/folder1",
        mount_point = "/mnt/flightdata",
        extra_configs = configs)
    
     from pyspark.sql.types import StringType
     spark.conf.set(
       "fs.azure.account.key.testadls05.dfs.core.windows.net", "<account access key>")
    
      df = spark.createDataFrame(["10", "11", "13"], StringType()).toDF("age")
      df.show()
      df.coalesce(1).write.format('csv').option('header', True).mode('overwrite').save('abfss://test@testadls05.dfs.core.windows.net/result_csv')