You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Notebook中实现CSV转Parquet:ADLS输出目录为空问题排查

CSV转Parquet后ADLS目录为空的排查与解决

问题根源分析

你的代码采用Pandas+PyArrow处理ADLS路径,但存在几个关键问题:

  1. 输出路径格式错误
    pq.write_table要求输出路径是具体的Parquet文件名,而非目录。你指定的output_file_path是目录路径,PyArrow无法自动在目录下生成文件,导致ADLS目录为空。

  2. ADLS访问配置缺失
    Pandas和PyArrow本身不原生支持abfss协议,需要依赖adlfs和fsspec库对接ADLS。如果未安装这些依赖或配置认证信息,代码看似运行无报错,但实际并未真正写入ADLS(可能是在本地临时路径读写,你打印的是本地数据)。

  3. 未利用PySpark原生能力
    既然是PySpark Notebook,用PySpark原生API处理ADLS路径更高效且无需额外配置——PySpark默认集成了ADLS访问支持(只要集群已配置ADLS权限)。

修正方案

方案1:修复原Pandas+PyArrow代码

  1. 安装依赖库:
pip install adlfs fsspec pyarrow
  1. 修改输出路径为具体文件名:
output_file_path = 'abfss://mycontainer@mygen2acc.dfs.core.windows.net/Parquet/courses.parquet'
  1. 配置ADLS认证(根据环境选择一种):
    • 若使用Managed Identity:无需额外配置(Notebook所在集群已启用的话)
    • 若使用Service Principal:设置环境变量
      import os
      os.environ['AZURE_CLIENT_ID'] = '你的客户端ID'
      os.environ['AZURE_TENANT_ID'] = '你的租户ID'
      os.environ['AZURE_CLIENT_SECRET'] = '你的客户端密钥'
      

方案2:使用PySpark原生API(推荐)

PySpark原生支持ADLS,代码更简洁且适合大数据场景:

def convert_csv_to_parquet(input_path, output_path):
    # 读取CSV(header=True表示首行是列名,inferSchema=True自动推断字段类型)
    df = spark.read.csv(input_path, header=True, inferSchema=True)
    
    # 写入Parquet,mode="overwrite"表示覆盖已有数据,可选append/ignore等
    df.write.mode("overwrite").parquet(output_path)
    
    # 验证写入结果
    parquet_df = spark.read.parquet(output_path)
    parquet_df.show(100)

input_file_path = 'abfss://mycontainer@mygen2acc.dfs.core.windows.net/MySQL_Project-Table_Courses.csv'
output_file_path = 'abfss://mycontainer@mygen2acc.dfs.core.windows.net/Parquet'

convert_csv_to_parquet(input_file_path, output_file_path)

验证步骤

  1. 运行修正后的代码后,前往ADLS对应的Parquet目录查看:
    • 用PySpark方案的话,目录下会生成多个.parquet分片文件和元数据文件
    • 用Pandas方案的话,会看到你指定的courses.parquet文件
  2. 检查代码中的打印结果是否和原CSV数据一致,确认数据未丢失

内容的提问来源于stack exchange,提问作者organza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 23:35:17