1.hbase 新建一个表:
create 'SSE_SENTIMENT:ReporterCompany',{NAME => 'cf1', REPLICATION_SCOPE => 1}
添加两条数据:
put 'SSE_SENTIMENT:ReporterCompany','001','cf1:name','xiaoming'
put 'SSE_SENTIMENT:ReporterCompany','002','cf1:name','xiaohua'
2.新建solr的分片:
solrctl instancedir --generate /opt/solr/bqjr
在/opt/solr/bqjr下面会生成一个conf文件夹,在 /opt/solr/bqjr下新建一个morphline-hbase-mapper.xml,
即/opt/solr/bqjr/morphline-hbase-mapper.xml
修改/opt/solr/bqjr/conf下面的schema.xml 文件
<field name="HBase_Indexer_Test_cf1_name" type="string" indexed="true" stored="true"/> #添加自己需要的字段
修改solrconfig.xml文件:这里默认false,改为true,意思是开启solr的硬提交
<autoCommit>
<maxTime>${solr.autoCommit.maxTime:60000}</maxTime>
<openSearcher>true</openSearcher>
</autoCommit>
更新schema.xml文件:
solrctl instancedir --update bqjr /opt/solr/bqjr
命令创建solr分片,运行下面的命令后则建片成功:
solrctl collection --create bqjr -s 2 -r 1 -m 3
3.编辑morphline-hbase-mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<indexer table="SSE_SENTIMENT:ReporterCompany" mapper="com.ngdata.hbaseindexer.morphline.MorphlineResultToSolrMapper" read-row="never">
<param name="morphlineFile" value="morphlines.conf"/>
<param name="morphlineId" value="bqjrMap"></param>
</indexer>
这里需要注意上面<param name="morphlineId" value="bqjrMap"></param>,value="bqjrMap",是对应下面的Morphlines文件中的id : bqjrMap,一定要保持一致才可以.
4. 通过CM页面进入到Key-Value Store Indexer的配置页面,里面有一个Morphlines文件
SOLR_LOCATOR : {
# Name of solr collection
#collection : bqjr
# ZooKeeper ensemble
zkHost : "$ZK_HOST"
}
morphlines : [
{
id : bqjrMap
importCommands : ["org.kitesdk.**","com.ngdata.**"]
commands : [
{
extractHBaseCells {
mappings : [
{
inputColumn : "cf1:name"
outputField : "HBase_Indexer_Test_cf1_name"
type : string
source : value
}
]
}
}
{ logTrace { format : "output record: {}", args : ["@{}"] } }
]
}
]
修改完后重启Key-Value Store Indexer服务
5. 注册 Lily HBase Indexer Configuration 和 Lily HBase Indexer Service
hbase-indexer add-indexer --name testMapIndexer --indexer-conf /opt/solr/bqjr/morphline-hbase-mapper.xml --connection-param solr.zk=sbd02.dev:2181,sbd03.dev:2181/solr --connection-param solr.collection=bqjr --zookeeper sbd01.dev:2181,sbd02.dev:2181,sbd03.dev:2181
6.测试索引器是否创建成功
hbase-indexer list-indexers --zookeeper sbd01.dev:2181,sbd02.dev:2181,sbd03.dev:2181
当看到processing 是处于running状态时,则成功了,若是显示的是failed,则没有成功,重启Key-Value Store Indexer服务观察状态是否成功,若不成功则删除掉该索引.
删除某个索引的命令
hbase-indexer delete-indexer -n testMapIndexer --zookeeper sbd01.dev:2181,sbd02.dev:2181,sbd03.dev:2181
重新运行上面的注册命令即可
===================创建完成========================
补充:删除solr的分片的命令:
curl 'http://192.168.23.178:8983/solr/admin/collections?action=DELETE&name= bqjr' #则会删除掉solr中的分片
参考文档:感谢博主的分享,获益匪浅
https://blog.csdn.net/u010936936/article/details/78064148
https://www.cnblogs.com/kekukekro/p/6340944.html
https://blog.csdn.net/qq_34842671/article/details/86496983