gpt4 book ai didi

java - 如何将 ORC BytesColumnVector 值设置为 NULL?

转载 作者:行者123 更新时间:2023-11-29 06:27:37 25 4
gpt4 key购买 nike

我正在使用 Groovy 编写一个 ORC 文件。

其中一列是字符串。 ORC 列类型是:

.addField("Name", TypeDescription.createString())

列 vector 为:

BytesColumnVector vName = (BytesColumnVector) batch.cols[1]

要分配给 vName 的值可能包含 NULL,但我无法让 ORC 将空值写入其数据。

尝试通过 set()、setValue() 或 setRef() 分配空值会抛出空指针错误,无论是在分配点,还是当批处理行在 ORC 中写入更深时。

我能得到的最接近的是:

byte[] b = new byte[0]
vName.setRef (i,b,0,0)

但这会将一个空字符串放入数据文件中,如以下转储片段所示(请参阅第二列“名称”):

{"ProductID":355,"Name":"","MakeFlag":false,"StandardCost":0,"Weight":null,"ModifiedDate":"2014-02-08 10:01:36.827"}

关于如何设置空字符串有什么想法吗?

编辑:有了这个问题的答案,我能够完成一些代码来将数据库表的内容写入 ORC。它可能对搜索与 ORC 相关的示例的人有用。 https://www.linkedin.com/pulse/orc-adls-polybase-ron-dunn/ enter link description here

最佳答案

我使用的是空字符串。我认为没有其他方法可以做到这一点。

只需确保将该列标记为包含空值即可。

您的代码理想情况下应如下所示:

BytesColumnVector vName = (BytesColumnVector) batch.cols[1];
byte[] EMPTY_BYTES = "".getBytes(StandardCharsets.UTF_8);
vName.setRef(i, EMPTY_BYTES, 0, 0);
vName.isNull[i] = true;
vName.noNulls = false;

关于java - 如何将 ORC BytesColumnVector 值设置为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49840279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com