我可以[反]序列化arrow/js实现中的数据帧字典吗?

2024-09-29 23:18:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用apachearrow将数据从Django后端发送到有角度的前端。要在数据帧中使用的数据帧/I。pyarrow可以在python微服务之间以这种方式共享数据,但是我找不到arrow的javascript实现方式。在

有没有一种方法可以反序列化/序列化一个以字符串为键,以数据帧/表为值的javascript侧带箭头的字典?在


Tags: 数据django方法字符串字典序列化方式箭头
1条回答
网友
1楼 · 发布于 2024-09-29 23:18:19

是的,可以在pyarrow和ArrowJS中使用RecordBatchReader和RecordBatchWriter IPC原语来实现。在

在python端,可以将表序列化为如下所示的缓冲区:

import pyarrow as pa

def serialize_table(table):
    sink = pa.BufferOutputStream()
    writer = pa.RecordBatchStreamWriter(sink, table.schema)
    writer.write_table(table)
    writer.close()
    return sink.getvalue().to_pybytes()

# ...later, in your route handler:
bytes = serialize_table(create_your_arrow_table())

然后可以在响应正文中发送字节。如果有多个表,可以将每个表中的缓冲区连接为一个大负载。在

我不确定在python中编写多部分/表单主体响应的功能是什么,但是如果您希望用表的名称(或希望包含的任何其他元数据)发送表,那么这可能是编写响应的最佳方法。在

在JavaScript端,可以使用Table.from()(如果只有一个表)读取响应,如果有多个表,则可以使用RecordBatchReader读取响应,或者如果希望以流式方式读取每个RecordBatch:

^{pr2}$

您可以在我们的ArrowJS测试中看到更多这样的示例: https://github.com/apache/arrow/blob/3eb07b7ed173e2ecf41d689b0780dd103df63a00/js/test/unit/ipc/writer/stream-writer-tests.ts#L40

您还可以在我编写的一个小fastfy插件中看到一些示例,该插件用于在node:https://github.com/trxcllnt/fastify-arrow中使用和生成箭头有效负载

相关问题 更多 >

    热门问题