我正在创建一些UDAF函数,我希望最终将字节数组直接写入磁盘。
我已经为我的终止设想了这样的东西......
public BytesWritable terminate() throws HiveException {
byte[] bitvalues = new byte[]{
(byte) 0x01,
(byte) 0x02,
(byte) 0x04,
(byte) 0x08
};
BytesWritable bw = new BytesWritable();
bw.set(bitvalues, 0, bitvalues.length);
return bw;
}
然后我想我可以在Hive中做这样的事情:
add jar myCustom.jar;
create temporary function foo as 'com.example.foo';
INSERT OVERWRITE local DIRECTORY 'foo-results'
SELECT foo(some_field) FROM some_table;
最终目标是让一个4字节长的文件,并通过我的terminate
方法提供精确的字节文字。
我认为问题是我的字节数组包含在BytesWritable中,某些决定在base64中编码字节数组。