【发布时间】:2018-09-25 04:30:31
【问题描述】:
我正在使用 Groovy 编写一个 ORC 文件。
其中一列是字符串。 ORC 列类型为:
.addField("Name", TypeDescription.createString())
列向量为:
BytesColumnVector vName = (BytesColumnVector) batch.cols[1]
要分配给 vName 的值可能包括 NULL,但我无法让 ORC 将空值写入其数据。
尝试通过 set()、setValue() 或 setRef() 分配空值会引发空指针错误,无论是在分配点,还是在 ORC 中更深地写入批处理行时。
我能得到的最接近的是:
byte[] b = new byte[0]
vName.setRef (i,b,0,0)
但这会将一个空字符串放入数据文件中,如下面的转储 sn -p 所示(参见第二列,“名称”):
{"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
【问题讨论】:
-
我使用的是空字符串。还要设置
vName.isNull[I] = true; vName.noNulls = false; -
@OmarAli 您能否将其添加为答案,以便我可以适当地投票?你解决了我的问题,谢谢。