如何解决箭头Java ListVector writeBatch和read获取空列表
我在spec:
initContainers:
- name: chown
image: docker.io/library/busyBox:latest
command:
- chown
- -R
- whatever-the-uid-is-for-your-tomcat-image
- /usr/local/tomcat/webapps/ROOT
volumeMounts:
- mountPath: /usr/local/tomcat/webapps/ROOT
name: tomcat
containers:
# ... as before
中有一个ListVector
和一个值[[1,2,3,4,5]]
,在IDEA中可以看到它的值。
我使用以下代码编写VectorSchemaRoot
变量并获取字节数组
VectorSchemaRoot
然后读回
val out = new ByteArrayOutputStream()
val writer = new ArrowStreamWriter(vectorSchemaRoot,null,out)
writer.start()
writer.writeBatch()
writer.end()
out.close()
val byteArr = out.toByteArray
架构正确,但列表为空 val allocator = new RootAllocator(Int.MaxValue)
val reader = new ArrowStreamReader(new ByteArrayInputStream(byteArr),allocator)
while (reader.loadNextBatch()) {
val schemaRoot = reader.getVectorSchemaRoot
schemaRoot
}
但是,我使用其他类型的值,例如char,bit,从[]
读取的结果是正确的(非空)。
如何解决byteArr
空问题?
解决方法
最后我只使用了基础类。
StructVector,ListVector
是复杂的类,根据我的测试,与仅使用基本类相比,它们不会带来速度或内存方面的好处。而且复杂类的文档很少。
因此,建议您使用基本类。只需使用“字段列表”制作它们的架构,就可以得到结构化矢量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。