From 9969324b5683c1f45cf2bc3173c6c2554e794470 Mon Sep 17 00:00:00 2001 From: chenheng Date: Wed, 21 Sep 2016 16:29:20 +0800 Subject: [PATCH] HBASE-16665 Check whether KeyValueUtil.createXXX could be replaced by CellUtil without copy --- .../src/main/java/org/apache/hadoop/hbase/client/Result.java | 2 +- .../src/main/java/org/apache/hadoop/hbase/CellUtil.java | 10 ++++++++++ .../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java | 2 +- .../org/apache/hadoop/hbase/mob/mapreduce/MemStoreWrapper.java | 3 ++- .../org/apache/hadoop/hbase/mob/mapreduce/SweepReducer.java | 3 ++- .../org/apache/hadoop/hbase/regionserver/AbstractMemStore.java | 2 +- .../apache/hadoop/hbase/regionserver/HRegionFileSystem.java | 3 ++- .../org/apache/hadoop/hbase/regionserver/StoreFileReader.java | 4 +--- 8 files changed, 20 insertions(+), 9 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java index f1e7cc4..d11c5df 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java @@ -279,7 +279,7 @@ public class Result implements CellScannable, CellScanner { final byte [] family, final byte [] qualifier) { Cell searchTerm = - KeyValueUtil.createFirstOnRow(CellUtil.cloneRow(kvs[0]), + CellUtil.createFirstOnRow(CellUtil.cloneRow(kvs[0]), family, qualifier); // pos === ( -(insertion point) - 1) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/CellUtil.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/CellUtil.java index 94c7189..3cc15a7 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/CellUtil.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/CellUtil.java @@ -1735,6 +1735,16 @@ public final class CellUtil { return new FirstOnRowCell(row, roffset, rlength); } + public static Cell createFirstOnRow(final byte[] row, final byte[] family, final byte[] col) { + return new FirstOnRowColCell(row, 0, (short)row.length, + family, 0, (byte)family.length, + col, 0, col.length); + } + + public static Cell createFirstOnRow(final byte[] row) { + return createFirstOnRow(row, 0, (short)row.length); + } + /** * Create a Cell that is smaller than all other possible Cells for the given Cell's row. * The family length is considered to be 0 diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java index 36067e5..8c34d77 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java @@ -317,7 +317,7 @@ public class HFilePrettyPrinter extends Configured implements Tool { if (this.isSeekToRow) { // seek to the first kv on this row shouldScanKeysValues = - (scanner.seekTo(KeyValueUtil.createFirstOnRow(this.row)) != -1); + (scanner.seekTo(CellUtil.createFirstOnRow(this.row)) != -1); } else { shouldScanKeysValues = scanner.seekTo(); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/MemStoreWrapper.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/MemStoreWrapper.java index 7997b49..2dea5bb 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/MemStoreWrapper.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/MemStoreWrapper.java @@ -27,6 +27,7 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.ArrayBackedTag; import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.KeyValue; @@ -155,7 +156,7 @@ public class MemStoreWrapper { context.getCounter(SweepCounter.FILE_AFTER_MERGE_OR_CLEAN).increment(1); // write reference/fileName back to the store files of HBase. scanner = snapshot.getScanner(); - scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_START_ROW)); + scanner.seek(CellUtil.createFirstOnRow(HConstants.EMPTY_START_ROW)); cell = null; Tag tableNameTag = new ArrayBackedTag(TagType.MOB_TABLE_NAME_TAG_TYPE, Bytes.toBytes(this.table.getName().toString())); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/SweepReducer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/SweepReducer.java index d39267b..b6b4f67 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/SweepReducer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/mapreduce/SweepReducer.java @@ -36,6 +36,7 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.PathFilter; import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.InvalidFamilyOperationException; @@ -348,7 +349,7 @@ public class SweepReducer extends Reducer { file.open(); try { scanner = file.getScanner(); - scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_BYTE_ARRAY)); + scanner.seek(CellUtil.createFirstOnRow(HConstants.EMPTY_BYTE_ARRAY)); Cell cell; while (null != (cell = scanner.next())) { if (kvs.contains(cell)) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/AbstractMemStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/AbstractMemStore.java index 5e9f632..9b1eab0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/AbstractMemStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/AbstractMemStore.java @@ -362,7 +362,7 @@ public abstract class AbstractMemStore implements MemStore { @Override public long updateColumnValue(byte[] row, byte[] family, byte[] qualifier, long newValue, long now) { - Cell firstCell = KeyValueUtil.createFirstOnRow(row, family, qualifier); + Cell firstCell = CellUtil.createFirstOnRow(row, family, qualifier); // Is there a Cell in 'snapshot' with the same TS? If so, upgrade the timestamp a bit. Cell snc = snapshot.getFirstAfter(firstCell); if(snc != null) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java index 508b4a7..8e28cc9 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java @@ -30,6 +30,7 @@ import java.util.UUID; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; @@ -598,7 +599,7 @@ public class HRegionFileSystem { try { if (top) { //check if larger than last key. - KeyValue splitKey = KeyValueUtil.createFirstOnRow(splitRow); + Cell splitKey = CellUtil.createFirstOnRow(splitRow); Cell lastKey = f.getLastKey(); // If lastKey is null means storefile is empty. if (lastKey == null) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileReader.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileReader.java index bd9d205..d91e79e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileReader.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileReader.java @@ -236,9 +236,7 @@ public class StoreFileReader { if (columns != null && columns.size() == 1) { byte[] column = columns.first(); // create the required fake key - Cell kvKey = KeyValueUtil.createFirstOnRow(row, 0, row.length, - HConstants.EMPTY_BYTE_ARRAY, 0, 0, column, 0, - column.length); + Cell kvKey = CellUtil.createFirstOnRow(row, HConstants.EMPTY_BYTE_ARRAY, column); return passesGeneralRowColBloomFilter(kvKey); } -- 2.9.3