code: public static Filter instantiateFilter(Configuration conf) {
      // get the filter, if it was configured    
      Class<? extends Filter> filterClass = conf.getClass(FILTER_CLASS_CONF_KEY, null, Filter.class);
      if (filterClass == null) {
        LOG.debug("No configured filter class, accepting all keyvalues.");
        return null;
      }
      LOG.debug("Attempting to create filter:" + filterClass);
      String[] filterArgs = conf.getStrings(FILTER_ARGS_CONF_KEY);
      ArrayList<byte[]> quotedArgs = toQuotedByteArrays(filterArgs);
      try {
        Method m = filterClass.getMethod("createFilterFromArguments", ArrayList.class);
        return (Filter) m.invoke(null, quotedArgs);
      } catch (IllegalAccessException e) {
        LOG.error("Couldn't instantiate filter!", e);
        throw new RuntimeException(e);
      } catch (SecurityException e) {
        LOG.error("Couldn't instantiate filter!", e);
        throw new RuntimeException(e);
      } catch (NoSuchMethodException e) {
        LOG.error("Couldn't instantiate filter!", e);
        throw new RuntimeException(e);
      } catch (IllegalArgumentException e) {
        LOG.error("Couldn't instantiate filter!", e);
        throw new RuntimeException(e);
      } catch (InvocationTargetException e) {
        LOG.error("Couldn't instantiate filter!", e);
        throw new RuntimeException(e);
      }
    }
docs: Create a {@link org.apache.hadoop.hbase.filter.Filter} to apply to all incoming keys ({@link KeyValue KeyValues}) to
  optionally not include in the job output
  
  @param conf {@link org.apache.hadoop.conf.Configuration} from which to load the filter
  @return the filter to use for the task, or <tt>null</tt> if no filter to should be used
  @throws java.lang.IllegalArgumentException if the filter is misconfigured