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

如何使用PySpark读取S3指定文件夹下带ABC前缀的CSV文件?

使用PySpark读取S3中指定前缀的CSV文件

方法一:直接用路径通配符读取

这是最简便的方式,PySpark支持在路径中使用通配符匹配目标文件:

from pyspark.sql import SparkSession

# 初始化SparkSession
spark = SparkSession.builder.appName("ReadABCCSV").getOrCreate()

# 读取s3://daily_file/下所有前缀为ABC的CSV文件
df = spark.read.csv(
    "s3://daily_file/ABC*.csv",
    header=True,  # 若CSV包含表头,设为True
    inferSchema=True  # 自动推断列数据类型,按需开启
)

# 查看数据示例
df.show()

ABC*.csv会精准匹配所有以ABC开头、.csv结尾的文件,无需额外筛选逻辑。

方法二:先列举目标文件再读取

如果需要更灵活的筛选规则(比如结合文件大小、修改时间等属性过滤),可以先用boto3列出符合条件的文件路径,再传给PySpark:

from pyspark.sql import SparkSession
import boto3

# 初始化SparkSession
spark = SparkSession.builder.appName("ReadABCCSV").getOrCreate()

# 初始化S3客户端(需确保环境已配置AWS凭证,比如IAM角色、环境变量或本地凭证文件)
s3_client = boto3.client("s3")
bucket = "daily_file"
target_prefix = "ABC"

# 列出bucket中前缀为ABC的文件
response = s3_client.list_objects_v2(Bucket=bucket, Prefix=target_prefix)
# 筛选出CSV格式的文件路径
csv_file_paths = [
    f"s3://{bucket}/{item['Key']}"
    for item in response["Contents"]
    if item["Key"].endswith(".csv")
]

# 读取筛选后的文件
df = spark.read.csv(
    csv_file_paths,
    header=True,
    inferSchema=True
)

df.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:37:03