pyspark 如何访问s3中创建的文件夹以将csv文件写入其中?

wgmfuz8q  于 2023-01-04  发布在  Spark
关注(0)|答案(1)|浏览(140)

我已经创建了文件夹的代码,但我如何才能访问该文件夹写入csv文件到该文件夹?

# Creating folder on S3 for unmatched data

client = boto3.client('s3')

# Variables

target_bucket = obj['source_and_destination_details']['s3_bucket_name']

subfolder = obj['source_and_destination_details']['s3_bucket_uri-new_folder_path'] + obj['source_and_destination_details']['folder_name_for_unmatched_column_data']

# Create subfolder (objects)

client.put_object(Bucket = target_bucket, Key = subfolder)

文件夹是由上面的代码创建成功,但如何写入csv文件呢?
下面是我曾试图写的代码,但它不工作

# Writing csv on AWS S3

df.reindex(idx).to_csv(obj['source_and_destination_details']['s3_bucket_uri-write'] + obj['source_and_destination_details']['folder_name_for_unmatched_column_data'] + obj['source_and_destination_details']['file_name_for_unmatched_column_data'], index=False)
2lpgd968

2lpgd9681#

S3存储桶不是文件系统。
我假设to_csv()方法应该写入某种类型的文件系统,但这不是它与S3一起工作的方式。虽然有将S3存储桶装载为文件系统的解决方案,但这不是首选方式。
通常,您将通过AWS REST APIsAWS CLI或客户端库(如您已经在使用的Boto)与S3交互。
因此,为了在S3上存储您的内容,您首先在本地创建文件,例如在系统的/tmp文件夹中。然后使用Boto的put_object()方法上传文件。

相关问题