一般来说,在 morplhine 中,您只需要读取数据,将其转换为 solr 文档,然后调用loadSolr
创建索引。
例如,这是我使用 MapReduceIndexerTools 将 Avro 数据上传到 Solr 的 moprhline 文件:
SOLR_LOCATOR : {
collection : collection1
zkHost : "127.0.0.1:2181/solr"
}
morphlines : [
{
id : morphline1
importCommands : ["org.kitesdk.**"]
commands : [
{
readAvroContainer {}
}
{
extractAvroPaths {
flatten : false
paths : {
id : /id
field1_s : /field1
field2_s : /field2
}
}
}
{
sanitizeUnknownSolrFields {
solrLocator : ${SOLR_LOCATOR}
}
}
{
loadSolr {
solrLocator : ${SOLR_LOCATOR}
}
}
]
}
]
运行时,它会读取 avro 容器,将 avro 字段映射到 solr 文档字段,删除所有其他字段并使用提供的 Solr 连接详细信息来创建索引。它基于本教程。
这是我用来索引文件并将它们合并到运行集合的命令:
sudo -u hdfs hadoop --config /etc/hadoop/conf \
jar /usr/lib/solr/contrib/mr/search-mr-job.jar org.apache.solr.hadoop.MapReduceIndexerTool \
--morphline-file /local/path/morphlines_file \
--output-dir hdfs://localhost/mrit/out \
--zk-host localhost:2181/solr \
--collection collection1 \
--go-live \
hdfs:/mrit/in/my-avro-file.avro
Solr 应该配置为与 HDFS 一起使用,并且应该存在集合。
所有这些设置都适用于 CDH 5.7 Hadoop 上的 Solr 4.10。