我在spark读取数据时遇到了一个问题,因为输入分区很大,我正在减慢spark中的503错误。
在与aws团队核实后,他们提到,由于请求率太高,在读取文件时会发生这种情况。
他们提供的解决方案之一是将小文件合并成大文件,这样我们就可以减少文件的数量。有人知道如何把s3中的小文件合并成大文件吗?有什么实用程序可以用来做这件事吗?
请注意,我指的不是一个分区下的小部分文件。假设我有一级分区作为创建日期和二级分区vin。我在每个vin下都有一个部件文件,但是vin的分区太多了。因此,我正在探索,如果我们可以合并这几个vin的部分文件在s3到通用的csv,然后我们可以处理这个问题的s3慢下来。
非常感谢您的回答!。
谢谢和问候,拉格夫·钱德拉·谢蒂
1条答案
按热度按时间8cdiaqws1#
首先,我不熟悉“Spark”。
在s3中合并文件是不可能的。s3只是一个按原样放置文件的地方。我认为aws支持告诉您的是,您可以通过减少文件数量来减少通话次数。因此,在将文件上传到s3之前,您可以将其放大(合并)。通过将更多数据放入每个文件或创建tarball/zip。
你可以得到类似的,如果没有更好的速度,加上保存你的请求限制,下载1100兆文件,然后下载100兆文件。然后您就可以开始利用s3的多部分上传/下载特性了。