使用 pyspark 列出 s3 存储桶中文件夹内的所有文件

问题描述 投票:0回答:1

我有一个 s3 存储桶“bucket1”,其中有一个名为“dir1”的目录。该目录内有多个文件。我只想在我的 pyspark 代码中创建此目录中所有文件名的列表,但我无法这样做。我对 pyspark 完全陌生,所以任何线索都会有帮助。我需要为其创建一个 Spark 会话吗?另外我不想使用像 boto3 等库。

amazon-web-services amazon-s3 pyspark
1个回答
0
投票

如果不使用 boto3,您将需要打开一个会话。请记住配置您的 AWS 凭证。在这种情况下,如果您将其部署在某处,您还可以使用 IAM 角色。

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("List S3 Files") \
    .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") \
    .config("spark.hadoop.fs.s3a.access.key", "access_key") \
    .config("spark.hadoop.fs.s3a.secret.key", "secret_key") \
    .getOrCreate()

s3_directory_path = "s3a://bucket1/dir1/"

file_paths = spark.sparkContext.wholeTextFiles(s3_directory_path).keys().collect()

file_names = [path.split("/")[-1] for path in file_paths]
© www.soinside.com 2019 - 2024. All rights reserved.