lily

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

我正在尝试使用cloudera的教程(http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/search_hbase_batch_indexer.html)
我有一个在hbase中以avro格式插入对象的代码,我想将它们插入solr,但是我什么都没有得到。
我看了一下日志:

15/06/12 00:45:00 TRACE morphline.ExtractHBaseCellsBuilder$ExtractHBaseCells: beforeNotify: {lifecycle=[START_SESSION]}
15/06/12 00:45:00 TRACE morphline.ExtractHBaseCellsBuilder$ExtractHBaseCells: beforeProcess: {_attachment_body=[keyvalues={0Name178721/data:avroUser/1434094131495/Put/vlen=237/seqid=0}], _attachment_mimetype=[application/java-hbase-result]}
15/06/12 00:45:00 DEBUG indexer.Indexer$RowBasedIndexer: Indexer _default_ will send to Solr 0 adds and 0 deletes
15/06/12 00:45:00 TRACE morphline.ExtractHBaseCellsBuilder$ExtractHBaseCells: beforeNotify: {lifecycle=[START_SESSION]}
15/06/12 00:45:00 TRACE morphline.ExtractHBaseCellsBuilder$ExtractHBaseCells: beforeProcess: {_attachment_body=[keyvalues={1Name134339/data:avroUser/1434094131495/Put/vlen=237/seqid=0}], _attachment_mimetype=[application/java-hbase-result]}

所以,我正在获取它们,但我不知道为什么它在solr中没有索引。我想我的morpline.conf是错的。

morphlines : [
{
    id : morphline1
    importCommands : ["org.kitesdk.**", "org.apache.solr.**", "com.ngdata.**"]
    commands : [
      {
         extractHBaseCells {
          mappings : [
            {
             inputColumn : "data:avroUser"
              outputField : "_attachment_body"
              type : "byte[]"
              source : value
            }
         ]
        }
      }

      #for avro use with type : "byte[]" in extractHBaseCells mapping above
      { readAvroContainer {} }
      {
        extractAvroPaths {
          flatten : true
          paths : {
            name : /name
          }
        }
      }
      { logTrace { format : "output record: {}", args : ["@{}"] } }
    ]
 }
]

我不确定在solr中是否必须有“\u attachment\u body”字段,但似乎没有必要,所以我猜readavrocontainer或extractavropaths是错误的。我在solr中有一个“name”字段,我的avrouser也有一个“name”字段。

{"namespace": "example.avro",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": ["int", "null"]},
     {"name": "favorite_color", "type": ["string", "null"]}
 ]
}
5t7ly7z5

5t7ly7z51#

我这里的一切都很顺利。我是这样做的:
1) 将hbase solr indexer作为服务安装:首先您必须安装hbase solr indexer。作为服务安装hbase solr索引
为此向yum repos添加cloudera repos。在该类型之后:

sudo yum  install hbase-solr-indexer

2) 克里特:好的,你做到了。
2) 为每个列族设置复制作用域并注册hbase索引器配置
使用lily hbase nrt indexer服务

$ hbase shell
hbase shell> disable 'record'
hbase shell> alter 'record', {NAME => 'data', REPLICATION_SCOPE => 1}
hbase shell> enable 'record'

试着遵循上面的其他教程。;)我在nrt解决方案上遇到了问题,但是当我一步一步地遵循所有的教程时,它起了作用。
我希望这能帮助别人。

相关问题