获取存储在S3上的100GB CSV文件的准确行数的最快方法

lh80um4z  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(180)

如果不使用Athena或任何FargateEC2 VM,要获得存储在Amazon S3上的100 GB CSV文件的准确行数,最快的方法是什么?我不能使用Athena,因为CSV文件不够干净。我不能使用Fargates或EC2 VM,因为我需要一个纯粹的无服务器解决方案,我不能使用像Snowflake这样的第三方服务(仅限原生AWS服务)。
此外,100 GB太大,无法容纳在Lambda Function/tmp中(限制为10 GB)。我可以尝试运行类似DuckDB的东西(或任何其他流数据库引擎),并使用SELECT COUNT(*) FROM "s3://myBucket/myFile.csv"查询扫描整个文件,但Lambda很可能超时,因为它从S3的读取带宽最多为100 MB/s,并且其运行时间不能超过15分钟(900 s)。
我知道文件的大致大小。

备注:我对AWS Glue Data Catalog的爬行器提供的行数估计不准确,误差为-50%/+100%。这可能用于某种迭代或二分法过程,但我无法计算出任何结果。例如,我尝试向上述查询添加一个OFFSET,其值小于但接近行数。但是运行DuckDB的Lambda超时了,这令人失望,也有些令人惊讶,因为像SELECT * FROM "s3://myBucket/myFile.csv" LIMIT 10 OFFSET 10000000这样的查询运行得很好。

wpx232ag

wpx232ag1#

最快的解决方案可能是将SelectObjectContentScanRange结合使用,以并行处理50MB左右的块上的请求。

相关问题