python - 如何使用 PyArrow 序列化单个标量结构?
问题描述
我想使用 PyArrow 标量结构作为 RocksDB 的键。因此,我需要尽可能高效地将标量序列化为字节数组。
我会想象这样的事情:
import pyarrow as pa
key_type = pa.struct([
('chrom', pa.string()),
('start', pa.int32()),
('end', pa.int32()),
])
value_type = pa.float32()
key1 = pa.scalar(("chr1", 13023, 13035), type=key_type)
value1 = pa.scalar(5.0, type=value_type)
key2 = pa.scalar(("chr4", 10211, 10315), type=key_type)
value2 = pa.scalar(2.0, type=value_type)
# How to implement to_bytes()?
db.set(key1.to_bytes(), value1.to_bytes())
db.set(key2.to_bytes(), value2.to_bytes())
# How to implement from_bytes?
value_test = db.get(key1.to_bytes())
value_test = from_bytes(value_test, type=value_type)
assert value_test == value1
正如评论中所写,我的问题是如何实施to_bytes()
和from_bytes(bytes_obj, type: pa.DataType)
?
请注意,我不想对架构进行编码,to_bytes()
因为架构在所有键/值中都是相同的,并且我想节省内存。
解决方案
推荐阅读
- android - 如何将 Multidex 支持添加到 Android d8.bat 命令行
- excel - 如何使用文本到列仅保留 Excel 中的最后一列?
- arrays - 想要拖动 gltf 对象
- python-3.x - TypeError: 'NoneType' 对象不可迭代并且出现更多错误
- database - Redshift 中的 sortkey 如何在内部工作?
- ios - 在 SwiftUI 中检测组件外部的屏幕交互
- java - 为什么java中的while(true)不能像我预期的那样在线程中工作
- javascript - 如何从像 LEFT() 这样的文本中获取字符但使用谷歌应用脚本
- python - 通过 time.sleep 避免 yfinance 的限制
- apache-spark - 创建没有下推谓词的动态框架问题