IndexUpdateConfiguration.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:7k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.contrib.index.mapred;
  19. import org.apache.hadoop.conf.Configuration;
  20. import org.apache.hadoop.contrib.index.example.HashingDistributionPolicy;
  21. import org.apache.hadoop.contrib.index.example.LineDocInputFormat;
  22. import org.apache.hadoop.contrib.index.example.LineDocLocalAnalysis;
  23. import org.apache.hadoop.mapred.InputFormat;
  24. import org.apache.lucene.analysis.Analyzer;
  25. import org.apache.lucene.analysis.standard.StandardAnalyzer;
  26. /**
  27.  * This class provides the getters and the setters to a number of parameters.
  28.  * Most of the parameters are related to the index update and the rest are
  29.  * from the existing Map/Reduce parameters.  
  30.  */
  31. public class IndexUpdateConfiguration {
  32.   final Configuration conf;
  33.   /**
  34.    * Constructor
  35.    * @param conf
  36.    */
  37.   public IndexUpdateConfiguration(Configuration conf) {
  38.     this.conf = conf;
  39.   }
  40.   /**
  41.    * Get the underlying configuration object.
  42.    * @return the configuration
  43.    */
  44.   public Configuration getConfiguration() {
  45.     return conf;
  46.   }
  47.   //
  48.   // existing map/reduce properties
  49.   //
  50.   // public int getIOFileBufferSize() {
  51.   // return getInt("io.file.buffer.size", 4096);
  52.   // }
  53.   /**
  54.    * Get the IO sort space in MB.
  55.    * @return the IO sort space in MB
  56.    */
  57.   public int getIOSortMB() {
  58.     return conf.getInt("io.sort.mb", 100);
  59.   }
  60.   /**
  61.    * Set the IO sort space in MB.
  62.    * @param mb  the IO sort space in MB
  63.    */
  64.   public void setIOSortMB(int mb) {
  65.     conf.setInt("io.sort.mb", mb);
  66.   }
  67.   /**
  68.    * Get the Map/Reduce temp directory.
  69.    * @return the Map/Reduce temp directory
  70.    */
  71.   public String getMapredTempDir() {
  72.     return conf.get("mapred.temp.dir");
  73.   }
  74.   //
  75.   // properties for index update
  76.   //
  77.   /**
  78.    * Get the distribution policy class.
  79.    * @return the distribution policy class
  80.    */
  81.   public Class<? extends IDistributionPolicy> getDistributionPolicyClass() {
  82.     return conf.getClass("sea.distribution.policy",
  83.         HashingDistributionPolicy.class, IDistributionPolicy.class);
  84.   }
  85.   /**
  86.    * Set the distribution policy class.
  87.    * @param theClass  the distribution policy class
  88.    */
  89.   public void setDistributionPolicyClass(
  90.       Class<? extends IDistributionPolicy> theClass) {
  91.     conf.setClass("sea.distribution.policy", theClass,
  92.         IDistributionPolicy.class);
  93.   }
  94.   /**
  95.    * Get the analyzer class.
  96.    * @return the analyzer class
  97.    */
  98.   public Class<? extends Analyzer> getDocumentAnalyzerClass() {
  99.     return conf.getClass("sea.document.analyzer", StandardAnalyzer.class,
  100.         Analyzer.class);
  101.   }
  102.   /**
  103.    * Set the analyzer class.
  104.    * @param theClass  the analyzer class
  105.    */
  106.   public void setDocumentAnalyzerClass(Class<? extends Analyzer> theClass) {
  107.     conf.setClass("sea.document.analyzer", theClass, Analyzer.class);
  108.   }
  109.   /**
  110.    * Get the index input format class.
  111.    * @return the index input format class
  112.    */
  113.   public Class<? extends InputFormat> getIndexInputFormatClass() {
  114.     return conf.getClass("sea.input.format", LineDocInputFormat.class,
  115.         InputFormat.class);
  116.   }
  117.   /**
  118.    * Set the index input format class.
  119.    * @param theClass  the index input format class
  120.    */
  121.   public void setIndexInputFormatClass(Class<? extends InputFormat> theClass) {
  122.     conf.setClass("sea.input.format", theClass, InputFormat.class);
  123.   }
  124.   /**
  125.    * Get the index updater class.
  126.    * @return the index updater class
  127.    */
  128.   public Class<? extends IIndexUpdater> getIndexUpdaterClass() {
  129.     return conf.getClass("sea.index.updater", IndexUpdater.class,
  130.         IIndexUpdater.class);
  131.   }
  132.   /**
  133.    * Set the index updater class.
  134.    * @param theClass  the index updater class
  135.    */
  136.   public void setIndexUpdaterClass(Class<? extends IIndexUpdater> theClass) {
  137.     conf.setClass("sea.index.updater", theClass, IIndexUpdater.class);
  138.   }
  139.   /**
  140.    * Get the local analysis class.
  141.    * @return the local analysis class
  142.    */
  143.   public Class<? extends ILocalAnalysis> getLocalAnalysisClass() {
  144.     return conf.getClass("sea.local.analysis", LineDocLocalAnalysis.class,
  145.         ILocalAnalysis.class);
  146.   }
  147.   /**
  148.    * Set the local analysis class.
  149.    * @param theClass  the local analysis class
  150.    */
  151.   public void setLocalAnalysisClass(Class<? extends ILocalAnalysis> theClass) {
  152.     conf.setClass("sea.local.analysis", theClass, ILocalAnalysis.class);
  153.   }
  154.   /**
  155.    * Get the string representation of a number of shards.
  156.    * @return the string representation of a number of shards
  157.    */
  158.   public String getIndexShards() {
  159.     return conf.get("sea.index.shards");
  160.   }
  161.   /**
  162.    * Set the string representation of a number of shards.
  163.    * @param shards  the string representation of a number of shards
  164.    */
  165.   public void setIndexShards(String shards) {
  166.     conf.set("sea.index.shards", shards);
  167.   }
  168.   /**
  169.    * Get the max field length for a Lucene instance.
  170.    * @return the max field length for a Lucene instance
  171.    */
  172.   public int getIndexMaxFieldLength() {
  173.     return conf.getInt("sea.max.field.length", -1);
  174.   }
  175.   /**
  176.    * Set the max field length for a Lucene instance.
  177.    * @param maxFieldLength  the max field length for a Lucene instance
  178.    */
  179.   public void setIndexMaxFieldLength(int maxFieldLength) {
  180.     conf.setInt("sea.max.field.length", maxFieldLength);
  181.   }
  182.   /**
  183.    * Get the max number of segments for a Lucene instance.
  184.    * @return the max number of segments for a Lucene instance
  185.    */
  186.   public int getIndexMaxNumSegments() {
  187.     return conf.getInt("sea.max.num.segments", -1);
  188.   }
  189.   /**
  190.    * Set the max number of segments for a Lucene instance.
  191.    * @param maxNumSegments  the max number of segments for a Lucene instance
  192.    */
  193.   public void setIndexMaxNumSegments(int maxNumSegments) {
  194.     conf.setInt("sea.max.num.segments", maxNumSegments);
  195.   }
  196.   /**
  197.    * Check whether to use the compound file format for a Lucene instance.
  198.    * @return true if using the compound file format for a Lucene instance
  199.    */
  200.   public boolean getIndexUseCompoundFile() {
  201.     return conf.getBoolean("sea.use.compound.file", false);
  202.   }
  203.   /**
  204.    * Set whether use the compound file format for a Lucene instance.
  205.    * @param useCompoundFile  whether to use the compound file format
  206.    */
  207.   public void setIndexUseCompoundFile(boolean useCompoundFile) {
  208.     conf.setBoolean("sea.use.compound.file", useCompoundFile);
  209.   }
  210. }