diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/mapreduce/MapReduceBackupCopyJob.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/mapreduce/MapReduceBackupCopyJob.java index 3cc8bcf74091..a099a3b528fc 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/mapreduce/MapReduceBackupCopyJob.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/mapreduce/MapReduceBackupCopyJob.java @@ -23,6 +23,8 @@ import java.lang.reflect.Method; import java.math.BigDecimal; import java.util.Arrays; +import java.util.Deque; +import java.util.LinkedList; import java.util.List; import java.util.Objects; @@ -331,12 +333,14 @@ protected Path createInputFileListing(Job job) throws IOException { private Text getKey(Path path) { int level = conf.getInt(NUMBER_OF_LEVELS_TO_PRESERVE_KEY, 1); int count = 0; - String relPath = ""; + Deque paths = new LinkedList<>(); + StringBuilder relPath = new StringBuilder(); while (count++ < level) { - relPath = Path.SEPARATOR + path.getName() + relPath; + paths.addFirst(Path.SEPARATOR + path.getName()); path = path.getParent(); } - return new Text(relPath); + paths.forEach(relPath::append); + return new Text(relPath.toString()); } private List getSourceFiles() throws NoSuchFieldException, SecurityException,