001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package org.apache.hadoop.mapred;
020
021 import org.apache.hadoop.classification.InterfaceAudience;
022 import org.apache.hadoop.classification.InterfaceStability;
023 import org.apache.hadoop.fs.Path;
024 import org.apache.hadoop.fs.PathFilter;
025
026 /**
027 * A utility class. It provides
028 * A path filter utility to filter out output/part files in the output dir
029 */
030 @InterfaceAudience.Public
031 @InterfaceStability.Stable
032 public class Utils {
033 public static class OutputFileUtils {
034 /**
035 * This class filters output(part) files from the given directory
036 * It does not accept files with filenames _logs and _SUCCESS.
037 * This can be used to list paths of output directory as follows:
038 * Path[] fileList = FileUtil.stat2Paths(fs.listStatus(outDir,
039 * new OutputFilesFilter()));
040 */
041 public static class OutputFilesFilter extends OutputLogFilter {
042 public boolean accept(Path path) {
043 return super.accept(path)
044 && !FileOutputCommitter.SUCCEEDED_FILE_NAME
045 .equals(path.getName());
046 }
047 }
048
049 /**
050 * This class filters log files from directory given
051 * It doesnt accept paths having _logs.
052 * This can be used to list paths of output directory as follows:
053 * Path[] fileList = FileUtil.stat2Paths(fs.listStatus(outDir,
054 * new OutputLogFilter()));
055 */
056 public static class OutputLogFilter implements PathFilter {
057 public boolean accept(Path path) {
058 return !"_logs".equals(path.getName());
059 }
060 }
061 }
062 }