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

如何在PySpark中读取文件名含未知时间戳的CSV文件

解决方案

报错根因

该Path does not exist报错一般由两类问题导致:

  1. Spark默认优先读取HDFS路径,未显式声明本地文件协议时不会检索本地磁盘文件
  2. 低版本Spark对本地路径的通配符匹配支持性较差,无法正确解析*通配符规则

修复步骤

你可以按以下方案逐一验证修复:

方案1:修正本地文件URI前缀(最快修复)

本地文件的标准URI格式为file:///(三个斜杠,代表省略host字段指向本地),修正路径写法即可:

df_read_file = sqlContext.read.format('com.databricks.spark.csv')\
    .option("delimiter", '|')\
    .options(header='true',quote='', escape='\"', inferSchema='false')\
    .load('file:///app/HTA/SrcFiles/inbound/metadata/projectno_without_data_*.csv')

方案2:预匹配文件路径列表(兼容性最高,适配所有Spark版本)

如果方案1不生效,可以先用Python的glob模块提前匹配所有符合规则的文件路径,再将路径列表直接传给Spark的load方法,不需要Spark自行解析通配符:

import glob

# 提前匹配所有符合命名规则的本地文件绝对路径
matched_files = glob.glob('/app/HTA/SrcFiles/inbound/metadata/projectno_without_data_*.csv')

df_read_file = sqlContext.read.format('com.databricks.spark.csv')\
    .option("delimiter", '|')\
    .options(header='true',quote='', escape='\"', inferSchema='false')\
    .load(matched_files)

额外注意事项

  • 如果是集群模式运行Spark任务,需要保证所有Worker节点都能访问对应路径的文件,或者将csv文件上传到HDFS用HDFS路径读取,避免只有Driver节点能访问本地文件的问题
  • Spark 2.0+版本更推荐使用SparkSession替代已过时的sqlContext,写法更简洁:
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("read_timestamp_csv").getOrCreate()
df_read_file = spark.read.csv(
    path=matched_files,
    sep='|',
    header=True,
    quote='',
    escape='\"',
    inferSchema=False
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:06:02