gpt4 book ai didi

python-3.x - 从 Azure Databricks 读取 Excel 文件

转载 作者:行者123 更新时间:2023-12-04 02:31:57 35 4
gpt4 key购买 nike

我正在尝试从 Azure Databricks 准备 Excel 文件 (.xlsx),文件位于 ADLS Gen 2 中。
例子:

srcPathforParquet = "wasbs://hyxxxx@xxxxdatalakedev.blob.core.windows.net//1_Raw//abc.parquet"
srcPathforExcel = "wasbs://hyxxxx@xxxxdatalakedev.blob.core.windows.net//1_Raw//src.xlsx"
从路径读取 Parquet 文件工作正常。
srcparquetDF = spark.read.parquet(srcPathforParquet )
从路径读取excel文件抛出错误: 没有这样的文件或目录
srcexcelDF = pd.read_excel(srcPathforExcel , keep_default_na=False, na_values=[''])

最佳答案

方法pandas.read_excel不支持使用 wasbsabfss访问文件的方案 URL。更多详情请引用here
所以如果你想用 pandas 访问文件,我建议你创建一个 sas token 并使用 https使用 sas token 的方案来访问文件或将文件下载为流,然后使用 pandas 读取它。同时,您还将存储帐户挂载为文件系统,然后按照@CHEEKATLAPRADEEP-MSFT 所说的那样访问文件。
例如

  • 使用 sas token 访问
  • 通过 Azure 门户创建 sas token
    enter image description here
  • 代码
  • pdf=pd.read_excel('https://<account name>.dfs.core.windows.net/<file system>/<path>?<sas token>')
    print(pdf)
    enter image description here
  • 将文件下载为流并读取文件
  • 安装包azure-storage-file-datalakexlrd在数据 block 中使用 pip
  • 代码
  • import io

    import pandas as pd
    from azure.storage.filedatalake import BlobServiceClient
    from azure.storage.filedatalake import DataLakeServiceClient

    blob_service_client = DataLakeServiceClient(account_url='https://<account name>.dfs.core.windows.net/', credential='<account key>')

    file_client = blob_service_client.get_file_client(file_system='test', file_path='data/sample.xlsx')
    with io.BytesIO() as f:
    downloader =file_client.download_file()
    b=downloader.readinto(f)
    print(b)
    df=pd.read_excel(f)
    print(df)
    enter image description here
    此外,我们还可以使用 pyspark 读取 excel 文件。但是我们需要添加jar com.crealytics:spark-excel在我们的环境中。更多详情请引用 herehere
    例如
  • 加包com.crealytics:spark-excel_2.12:0.13.1通过行家。此外,请注意,如果您使用 scala 2.11,请添加包 com.crealytics:spark-excel_2.11:0.13.1
  • 代码
  • spark._jsc.hadoopConfiguration().set("fs.azure.account.key.<account name>.dfs.core.windows.net",'<account key>')

    print("use spark")
    df=sqlContext.read.format("com.crealytics.spark.excel") \
    .option("header", "true") \
    .load('abfss://test@testadls05.dfs.core.windows.net/data/sample.xlsx')

    df.show()
    enter image description here

    关于python-3.x - 从 Azure Databricks 读取 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63769701/

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