Hadoop MapReduceIndexerTool-在Solr中索引HDFS文件的最佳方法?
我需要将HDFS文件(包括TXT、PDF、DOCX和其他富文档)索引到Solr中 目前,我正在使用LucidWorks连接器的DirectoryIngestMapper来实现同样的功能。 但是我不能使用它,因为它有一些限制(主要的限制是您不能指定要考虑的文件类型) 因此,现在我正在研究使用Hadoop MapReduceIndexerTool-在Solr中索引HDFS文件的最佳方法?,hadoop,solr,hdfs,cloudera,lucidworks,Hadoop,Solr,Hdfs,Cloudera,Lucidworks,我需要将HDFS文件(包括TXT、PDF、DOCX和其他富文档)索引到Solr中 目前,我正在使用LucidWorks连接器的DirectoryIngestMapper来实现同样的功能。 但是我不能使用它,因为它有一些限制(主要的限制是您不能指定要考虑的文件类型) 因此,现在我正在研究使用MapReduceIndexerTool的可能性。但是它没有很多初学者(我指的是绝对基本的!)级别的例子 是否有人可以发布一些带有示例的链接,以开始使用MapReduceIndexerTool?是否有其他更好
MapReduceIndexerTool
的可能性。但是它没有很多初学者(我指的是绝对基本的!)级别的例子
是否有人可以发布一些带有示例的链接,以开始使用MapReduceIndexerTool?是否有其他更好或更简单的方法来索引HDFS中的文件
但是我不能使用它,因为它有一些限制(主要的限制是您不能指定要考虑的文件类型)
输入的是一条路径
因此,可以按文件名指定
-i/path/*.pdf
编辑:
您可以添加add.subdirectories
参数。但是*.pdf
不是递归设置的
-Dadd.subdirectories=true
在Cloudera上,我认为您有以下选项:
- 自定义spark或map reduce任务,例如使用
.csv
文件索引/上载到SolR。
此过程将从HDFS读取csv,并直接在HDFS中写入索引
另见
假设您有:
- 有效的cloudera安装(请参阅
,如果使用Docker Quickstart,则应为此\u是您的\u cloudera\u主机
)Quickstart.cloudera
- 存储在HDFS中的csv文件(请参见
,如这是您的输入\u csv文件
)/YOUR HDFS dir/YOUR csv.csv
- 已配置预期字段的有效目标SolR集合(请参见
)此\u是\u您的\u目标\u集合
- 输出目录将是SolR配置的
(请参见instanceDir
),并且应该是HDFS路径这是您的\u核心\u instanceDir
- 输出目录将是SolR配置的
uid
、firstName
和lastName
列。第一行包含标题。Morphlines配置文件将跳过第一行,因此实际的列名并不重要,列的顺序应该是这样的。
在SolR上,我们应该使用类似的内容配置字段:
<field name="_version_" type="long" indexed="true" stored="true" />
<field name="uid" type="string" indexed="true" stored="true" required="true" />
<field name="firstName" type="text_general" indexed="true" stored="true" />
<field name="lastName" type="text_general" indexed="true" stored="true" />
<field name="text" type="text_general" indexed="true" multiValued="true" />
要导入,请在群集中运行以下命令:
hadoop jar /usr/lib/solr/contrib/mr/search-mr-*-job.jar \
org.apache.solr.hadoop.MapReduceIndexerTool \
--output-dir hdfs://quickstart.cloudera/THIS_IS_YOUR_CORE_INSTANCEDIR/ \
--morphline-file ./csv-to-solr-morphline.conf \
--zk-host quickstart.cloudera:2181/solr \
--solr-home-dir /THIS_IS_YOUR_CORE_INSTANCEDIR \
--collection THIS_IS_YOUR_DESTINATION_COLLECTION \
--go-live \
hdfs://THIS_IS_YOUR_CLOUDERA_HOST/THIS_IS_YOUR_INPUT_CSV_FILE
一些考虑:
- 您可以使用
运行上述命令,因为您不应该有在hdfs输出目录中写入的权限sudo-u hdfs
- 默认情况下,Cloudera QuickStart具有非常小的内存和堆内存配置。 如果您收到内存不足异常或堆异常,我建议使用Cloudera Manager->纱线->配置来增加它( ) 对于map和reduce作业,我使用了1GB内存和500MB堆。 还可以考虑改变<代码> .cap.apt.java >代码> MapReduce。map。java. opt>代码> MapReduce。map。内存。Mb< /Calp>和<代码> MapReduce。Map.My.My/<代码> >代码> /ETH/Hadoop/CONF/MAP红色站点。XML
hadoop jar /usr/lib/solr/contrib/mr/search-mr-*-job.jar \
org.apache.solr.hadoop.MapReduceIndexerTool \
--output-dir hdfs://quickstart.cloudera/THIS_IS_YOUR_CORE_INSTANCEDIR/ \
--morphline-file ./csv-to-solr-morphline.conf \
--zk-host quickstart.cloudera:2181/solr \
--solr-home-dir /THIS_IS_YOUR_CORE_INSTANCEDIR \
--collection THIS_IS_YOUR_DESTINATION_COLLECTION \
--go-live \
hdfs://THIS_IS_YOUR_CLOUDERA_HOST/THIS_IS_YOUR_INPUT_CSV_FILE