我想使用Polar来读取存储在S3上的拼图文件.我在AWS Lambda中运行我的代码.

在使用boto3时,我会在全局作用域中创建一个客户端,以便 for each 调用重用该连接(例如, for each Lambda冷启动创建一个客户端,但不是 for each 调用创建一个客户端):


client - boto3.client("s3")

def handler(event, context):
    # Use the client here, ensuring the connection already exist

Polars文档说,Polars可以通过查看我正在阅读的文件的位置为我连接到S3:

df = pl.read_parquet("s3://path/to/file.parquet")

但是,如果我将其放入处理程序中,我假设会 for each Lambda调用重新创建连接.我真的希望能够将连接传递给read_parquet(或scan_parquet,或其他IO方法),如:

df = pl.read_parquet("s3://path/to/file.parquet", connection_options={"aws": {"client": client}})

我对这些文档的解读是,client配置仅仅是它连接的how,而不是客户端对象.

如果我错了,我可以传递一个客户端,它应该是什么类型的对象?我假设连接池在这里是有用的,或者是底层API在某种程度上为我做了这件事,这是错误的吗?

推荐答案

我制作了issue for this和Polar Maintainers made a change,以提高缓存性能.

然而,根据我对这个问题的 comments ,使用boto3下载文件仍然比使用Polars从S3读取文件更快.

我不知道object_store/Polars堆栈的哪个部分比boto3更慢,但在编写本文时,我在应用程序中使用的是boto3.

Python相关问答推荐

如何在具有重复数据的pandas中对groupby进行总和,同时保留其他列

如何使用matplotlib在Python中使用规范化数据和原始t测试值创建组合热图?

聚合具有重复元素的Python字典列表,并添加具有重复元素数量的新键

如何获取numpy数组的特定索引值?

利用Selenium和Beautiful Soup实现Web抓取JavaScript表

当递归函数的返回值未绑定到变量时,非局部变量不更新:

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

需要帮助重新调整python fill_between与数据点

try 检索blob名称列表时出现错误填充错误""

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量

如何在Python中使用Iscolc迭代器实现观察者模式?

Python Mercury离线安装

提取数组每行的非零元素

在Django中重命名我的表后,旧表中的项目不会被移动或删除

如果服务器设置为不侦听创建,则QWebSocket客户端不连接到QWebSocketServer;如果服务器稍后开始侦听,则不连接

文本溢出了Kivy的视区

如果列包含空值,则PANAS查询不起作用

如何将验证器应用于PYDANC2中的EACHY_ITEM?

解析CSV文件以将详细信息添加到XML文件

如何从具有完整层次数据的Pandas框架生成图形?