如何使用awswrangler读取存储在S3中的parquet文件的前几N行?



我试图使用awswrangler读取存储在S3中的任意大的parquet文件到pandas数据框中,但由于文件的大小(和我的差带宽),将我的查询限制为第一个N行。

我不知道如何做到这一点,或者不重新定位是否可能。

我是否可以在读取第一个块后使用chunked=INTEGER并中止,如果可以,如何使用?

我遇到过这个不完整的解决方案(最后N行;))使用pyarrow -读取S3的最后N行木地板表-但是基于时间的过滤器对我来说不是理想的,并且接受的解决方案甚至没有到达故事的结尾(尽管它很有用)。

或者有没有其他方法不需要先下载文件(我现在可能已经完成了)?

谢谢!

您可以使用S3 Select对awswrangler进行此操作。例如:

import awswrangler as wr
df = wr.s3.select_query(
sql="SELECT * FROM s3object s limit 5",
path="s3://amazon-reviews-pds/parquet/product_category=Gift_Card/part-00000-495c48e6-96d6-4650-aa65-3c36a3516ddd.c000.snappy.parquet",
input_serialization="Parquet",
input_serialization_params={},
use_threads=True,
)

将只从S3对象返回5行。

这对于其他read方法是不可能的,因为在读取它之前必须在本地拉取整个对象。使用S3 select,过滤是在服务器端完成的,而不是

相关内容

  • 没有找到相关文章

最新更新