我在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)
我需要处理大量文件。
答案 0 :(得分:-1)
有多种方法可以实现此目的:
简单方法:在s3位置上创建一个配置单元外部表,并在配置单元中进行所需的处理。 例如:如果不存在MovieDetails,则创建外部表( movieId int, 标题字符串 ) 行格式由'|'终止的字段 存储为文本文件 位置's3://us-east-1.****.samples/sparksql/movielens/movie-details';
使用Spark:使用spark读取文件,您可以创建相同的数据框并进行处理。