使用StreamLoad写入Parquet或者ORC格式的数据的时候, 对于Bitmap类型如何写入呢, 我尝试用BYTE_ARRAY类型(代码中基于RoaringBitmap构建), 但是写入的时候会报错无法从Varchar(65533)转换到Bitmap类型
使用StreamLoad写入Parquet或者ORC格式的数据的时候, 对于Bitmap类型如何写入呢, 我尝试用BYTE_ARRAY类型(代码中基于RoaringBitmap构建), 但是写入的时候会报错无法从Varchar(65533)转换到Bitmap类型
更新笔者最终方案:
在内存中构建bitmap数据结构, Doris使用的C语言的bitmap库(例如在Go中可以使用github.com/RoaringBitmap/gocroaring来实现), 然后再将bitmap编码成二进制(第一个字节编码数据类型, 后面的编码是bitmap的二进制数组), 最终将编好的二进制序列转化成base64编码的字符串写入即可.
注意:
仅适用于一次写入大量比特位的场景, 用于海量数据摄入场景中, 通过bitmap编码大幅减少整数占用空间, 从而提升写入性能,如果每次只写入少量几个数值,编码可能导致占用空间反而上升.