gpt4 book ai didi

python - 有没有办法使用 Python 合并上传到 AWS S3 存储桶的多个 CSV 文件?

转载 作者:行者123 更新时间:2023-12-05 03:00:26 24 4
gpt4 key购买 nike

我需要设置一个 AWS Lambda 函数,当新的 CSV 文件上传到 S3 存储桶时触发,以将 CSV 文件合并到一个主文件中(它们将具有相同的列数和列名),然后那个新的主文件文件上传到另一个 S3 存储桶。

我将 Python 用于 Lambda 函数。我用我的 Lambda 函数和我使用的依赖项(Pandas 和 Numpy)创建了一个 zip 文件夹并上传了它。

目前,我必须在 zip 文件夹本身中包含我想要合并在一起的 CSV 文件,当我 checkin CloudWatch 时,该函数合并这些 CSV 文件并且输出(主文件)在日志中。

我不知道如何将我的代码链接到 S3 存储桶以进行输入和输出。

这是我正在开发的应用程序。

这是我正在使用的 python 代码:

    import os
import glob
import numpy
import pandas as pd

def handler(event, context):
#find all csv files in the folder
#use glob pattern matching -> extension = 'csv'
#save result in list -> all_filenames
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])

#export to csv
combined_csv.to_csv( "/tmp/combined_csv.csv", index=False, encoding='utf-8-sig')
f = open("/tmp/combined_csv.csv", "r")
print(f.read())
f.close()

我不想每次都在与我的 python 脚本相同的 zip 文件夹中手动输入 CSV 文件,并且还希望输出主 CSV 文件位于单独的 S3 存储桶中。

最佳答案

我建议您使用 Amazon Athena 执行此操作。

  • CREATE EXTERNAL TABLE在 Amazon S3 中定义输入位置和格式
  • CREATE TABLE AS在 Amazon S3 中定义输出位置并使用查询格式 (CSV Zip)(例如 SELECT * FROM input-table)

这样,就不需要下载、处理和上传文件了。这一切都将由 Amazon Athena 完成。此外,如果输入文件被压缩,成本会更低,因为 Athena 是根据从磁盘读取的数据量收费的。

您可以从 AWS Lambda 函数调用 Amazon Athena。只需确保它仅在所有输入文件就位后 调用 Athena。

关于python - 有没有办法使用 Python 合并上传到 AWS S3 存储桶的多个 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56844198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com