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