如何将二进制数据作为solr字段索引hbase列?

cfh9epnr  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(377)

我需要索引存储在hbase行中的数据。显而易见的解决方案是通过复制使用lilyhbase索引器,并将结果推送到solr集合中。
问题的根源是我的hbase行中有一些“短二进制”列,如md5、crc64、uuid等。我当然把它们当作生的来储存 byte[] 它节省了我很多空间。但我需要根据存储实际表示的一些标准对数据进行索引。如何以正确的方式做到这一点?
目前我只在solr看到 BinaryField 视情况选择solr字段类型。但它要求hbase列内容是base64编码的,而lily hbase indexer看起来不像是支持这一点的解决方案。
我通过lily hbase indexer看到的唯一选项是将列Map配置为 bigDecimal . 在这种情况下适用吗?据我所知 string 这本身不是一种选择。
如果我使用morphline,我可以基于 extractHBaseCells 来自cloudera和type的命令 byte[] 它被承诺只是透明的管道。但我应该如何处理提取的列数据来接收solr二进制字段呢?
Map后,如何保存索引中这样一个二进制字段的词典顺序?我会考虑选择Map byte[] 作为2位十六进制数的序列,但有什么好的方法来Map这种方式吗?

kkbh8khc

kkbh8khc1#

收到的工作溶液:
lily hbase索引器配置为 row Map类型。结果是文档id(唯一键)是hbase行键。
带有二进制数据的hbase行键在本例中是基于lily hbase索引器配置进行格式化的,其中unique key formatter设置为“com.ngdata.hbaseindexer.uniquekey.hexuniquekeyformatter”。这个结果将文档id('id')solr字段作为匹配行键二进制表示的小写十六进制数字字符串序列。也许可以更好,但至少工作如预期。注意“id”solr字段在这里是string类型。
二元细胞的变形线变换基于 extractHBaseCells 来自cloudera搜索的命令。类型Map byte[] 用于恰好生成base64编码字段。
更新1:
补充 HBASE_INDEXER_CLASSPATH hbase索引器和附加类扩展的环境配置 com.ngdata.hbaseindexer.uniquekey.BaseUniqueKeyFormatter 它现在对唯一密钥执行base64编码,因此可以声明为 BinaryField . 这终于完成了我对索引器的所有要求。因此,现在solr接收到正确的'update'请求,其中包含base64编码的'id'字段和从其他所需列Map的字段。
更新2:
玩够了之后 solr.BinaryField 我来只是为了简单 solr.StrField 所有我需要索引的东西。对于二进制字节字符串(如哈希),它们被转换为小写十六进制数字序列,每个字节2位。也许在性能方面不是最好的,但看起来最便携和灵活。对于'just stored'字段,我已经有base64编码器,但如果不索引它们,我就不会在solr中显示字段。

相关问题