我需要索引存储在HBase行中的数据。明显的解决方案是通过复制使用Lily HBase索引器并将结果推送到SOLR集合中。
我的问题的根源是我有一些短的二进制文件'我的HBase行中的列,如MD5,CRC64,UUID等。当然,我将它们存储为原始byte[]
表示,这为我节省了大量空间。但我需要根据存储实际表示的一些此类标准来索引数据。如何以正确的方式这样做?
BinaryField
SOLR字段类型。但它要求HBase列内容为Base64编码,Lily HBase索引器看起来不像支持这一点的解决方案。bigDecimal
。它适用于这种情况吗?据我所知,string
本身不是一种选择。extractHBaseCells
命令并输入byte[]
,它被承诺只是透明管道。但是,我应该如何处理提取的列数据以接收SOLR二进制字段?byte[]
映射为2位十六进制数字的序列,但是有一些好方法可以这样映射吗?答案 0 :(得分:3)
收到工作解决方案:
row
映射类型。结果是文档ID(唯一键)是HBase行键。extractHBaseCells
的映射恰好产生了Base64编码的字段。更新1:
byte[]
的类添加了HBASE_INDEXER_CLASSPATH
环境配置,现在对唯一键执行Base64编码,因此可以将其声明为com.ngdata.hbaseindexer.uniquekey.BaseUniqueKeyFormatter
。这终于完成了我从索引器那里得到的所有东西。所以现在SOLR收到正确的更新'使用Base64编码的' id'从其他所需列映射的字段和字段。更新2:
BinaryField
播放得足够之后,我只是简单地solr.BinaryField
找到了我需要索引的所有内容。在二进制字节字符串(如散列)的情况下,它们被转换为小写十六进制数字的序列,每字节2个数字。可能不是性能方面最好的,但看起来最便携和灵活。对于刚刚存储的'字段我已经有了Base64编码器,但如果我没有索引它,我就不会在SOLR中输入字段。