as_table pa.Table.from_pylist(my_items)
非常有用,但它不允许进行任何真正的验证。您可以对生成的Table调用as_table.validate()
,但它只针对自己推断的类型进行验证,并且不会捕获任何关于非空字段的内容。我可以手动创建一堆模式,一个
pa.Field
接一个pa.Field
,但其中一些很大或者有点复杂。我希望能够从已知的良好规范示例创建对象,序列化生成的模式(或执行某些代码生成或其他保存方式),然后使用它来验证未来的读取和写入。模式对象具有.serialize()
方法的事实是令人心动的:s = pa.Table.from_pylist(known_good_objects).schema
serialized = s.serialize().to_pybytes()
# What's in here?
print(serialized)
b'\xff\xff\xff\xff\x99\x21\x...'
好的,这是某种二进制事物。我已经多次查阅了官方文档,但并没有什么帮助。尝试使用各种类型的UTF对字节进行.decode()
失败了,我也找不到任何等效的.deserialize()
方法来执行任何预期的操作。我能在这里使用一些IPC魔法吗?我可以只是将结果对象pickle化并稍后加载它们吗?从内存中的对象重用或生成pyarrow模式的路径是什么?
schema(field, field, field...)
之外,似乎这是最好的选择。 - a p