docs: def run_pipes(executable, input_path, output_path, more_args=None,
                properties=None, force_pydoop_submitter=False,
                hadoop_conf_dir=None, logger=None, keep_streams=False):
      """
      Run a pipes command.
  
      ``more_args`` (after setting input/output path) and ``properties``
      are passed to :func:`run_cmd`.
  
      If not specified otherwise, this function sets the properties
      ``mapreduce.pipes.isjavarecordreader`` and
      ``mapreduce.pipes.isjavarecordwriter`` to ``"true"``.
  
      This function works around a bug in Hadoop pipes that affects
      versions of Hadoop with security when the local file system is
      used as the default FS (no HDFS); see
      https://issues.apache.org/jira/browse/MAPREDUCE-4000.  In those
      set-ups, the function uses Pydoop's own pipes submitter
      application.  You can force the use of Pydoop's submitter by
      passing the argument force_pydoop_submitter=True.
      """
      if logger is None:
          logger = utils.NullLogger()
      if not hdfs.path.exists(executable):
          raise IOError("executable %s not found" % executable)
      if not hdfs.path.exists(input_path) and not (set(input_path) & GLOB_CHARS):
          raise IOError("input path %s not found" % input_path)
      if properties is None:
          properties = {}
      properties.setdefault('mapreduce.pipes.isjavarecordreader', 'true')
      properties.setdefault('mapreduce.pipes.isjavarecordwriter', 'true')
      if force_pydoop_submitter:
          use_pydoop_submit = True
      else:
          use_pydoop_submit = False
          ver = pydoop.hadoop_version_info()
          if ver.has_security():
              if ver.is_cdh_mrv2() and hdfs.default_is_local():
                  raise RuntimeError("mrv2 on local fs not supported yet")
              use_pydoop_submit = hdfs.default_is_local()
      args = [
          "-program", executable,
          "-input", input_path,
          "-output", output_path,
      ]
      if more_args is not None:
          args.extend(more_args)
      if use_pydoop_submit:
          submitter = "it.crs4.pydoop.pipes.Submitter"
          pydoop_jar = pydoop.jar_path()
          args.extend(("-libjars", pydoop_jar))
          return run_class(submitter, args, properties,
                           classpath=pydoop_jar, logger=logger,
                           keep_streams=keep_streams)
      else:
          return run_mapred_cmd("pipes", args=args, properties=properties,
                                hadoop_conf_dir=hadoop_conf_dir, logger=logger,
                                keep_streams=keep_streams)