如何在python中更快地从s3中读取和处理多个文件?

时间:2019-04-09 05:08:26

标签: python bash pandas amazon-web-services amazon-s3

我在s3的特定文件夹位置中有多个文件。我想读全部。目前,我循环所有文件并使用pandas read_csv创建一个数据框,然后将所有这些文件连接起来。但是该过程需要很多时间。我想要一些可以读取文件并对其进行处理的东西。

当前代码:

s3 = boto3.resource("s3")
bg = s3.Bucket("bucket")
objects = bg.objects.filter(Prefix="prefix")
file_list = []
for obj in objects:
    df = pd.read_csv(f's3://bucket/{obj.key}')
    file_list.append(df)
final_df = pd.concat(file_list)

我需要处理大量文件。

1 个答案:

答案 0 :(得分:-1)

有多种方法可以实现此目的:

  1. 简单方法:在s3位置上创建一个配置单元外部表,并在配置单元中进行所需的处理。 例如:如果不存在MovieDetails,则创建外部表( movieId int, 标题字符串 ) 行格式由'|'终止的字段 存储为文本文件 位置's3://us-east-1.****.samples/sparksql/movielens/movie-details';

  2. 使用Spark:使用spark读取文件,您可以创建相同的数据框并进行处理。

  3. 如果文件以流方式发送,则可以将Nifi与SNS和SQS集成使用(在这种情况下不适用)