org.apache.hadoop.hbase.util
Class Bytes

java.lang.Object
  extended by org.apache.hadoop.hbase.util.Bytes

@InterfaceAudience.Public
@InterfaceStability.Stable
public class Bytes
extends Object

Utility class that handles byte arrays, conversions to/from other types, comparisons, hash code generation, manufacturing keys for HashMaps or HashSets, etc.


Nested Class Summary
static class Bytes.ByteArrayComparator
          Byte array comparator class.
static class Bytes.RowEndKeyComparator
          A Bytes.ByteArrayComparator that treats the empty array as the largest value.
 
Field Summary
static Comparator<byte[]> BYTES_COMPARATOR
          Pass this to TreeMaps where byte [] are keys.
static org.apache.hadoop.io.RawComparator<byte[]> BYTES_RAWCOMPARATOR
          Use comparing byte arrays, byte-by-byte
static int ESTIMATED_HEAP_TAX
          Estimate of size cost to pay beyond payload in jvm for instance of byte [].
static int SIZEOF_BOOLEAN
          Size of boolean in bytes
static int SIZEOF_BYTE
          Size of byte in bytes
static int SIZEOF_CHAR
          Size of char in bytes
static int SIZEOF_DOUBLE
          Size of double in bytes
static int SIZEOF_FLOAT
          Size of float in bytes
static int SIZEOF_INT
          Size of int in bytes
static int SIZEOF_LONG
          Size of long in bytes
static int SIZEOF_SHORT
          Size of short in bytes
 
Constructor Summary
Bytes()
           
 
Method Summary
static byte[] add(byte[] a, byte[] b)
           
static byte[] add(byte[] a, byte[] b, byte[] c)
           
static int binarySearch(byte[][] arr, byte[] key, int offset, int length, org.apache.hadoop.io.RawComparator<byte[]> comparator)
          Binary search for keys in indexes.
static long bytesToVint(byte[] buffer)
           
static int compareTo(byte[] left, byte[] right)
           
static int compareTo(byte[] buffer1, int offset1, int length1, byte[] buffer2, int offset2, int length2)
          Lexicographically compare two arrays.
static boolean contains(byte[] array, byte target)
           
static boolean contains(byte[] array, byte[] target)
           
static byte[] copy(byte[] bytes)
          Copy the byte array given in parameter and return an instance of a new byte array with the same length and the same content.
static byte[] copy(byte[] bytes, int offset, int length)
          Copy the byte array given in parameter and return an instance of a new byte array with the same length and the same content.
static boolean equals(byte[] left, byte[] right)
           
static boolean equals(byte[] left, int leftOffset, int leftLen, byte[] right, int rightOffset, int rightLen)
           
static boolean equals(List<byte[]> a, List<byte[]> b)
           
static byte[] getBytes(ByteBuffer buf)
          Returns a new byte array, copied from the given buf, from the position (inclusive) to the limit (exclusive).
static List<byte[]> getUtf8ByteArrays(List<String> strings)
           
static int hashCode(byte[] b)
           
static int hashCode(byte[] b, int length)
           
static int hashCode(byte[] bytes, int offset, int length)
           
static byte[] head(byte[] a, int length)
           
static byte[] incrementBytes(byte[] value, long amount)
          Bytewise binary increment/deincrement of long contained in byte array on given amount.
static int indexOf(byte[] array, byte target)
          Returns the index of the first appearance of the value target in array.
static int indexOf(byte[] array, byte[] target)
          Returns the start position of the first occurrence of the specified target within array, or -1 if there is no such occurrence.
static boolean isSorted(Collection<byte[]> arrays)
           
static Iterable<byte[]> iterateOnSplits(byte[] a, byte[] b, boolean inclusive, int num)
          Iterate over keys within the passed range.
static Iterable<byte[]> iterateOnSplits(byte[] a, byte[] b, int num)
          Iterate over keys within the passed range, splitting at an [a,b) boundary.
static Integer mapKey(byte[] b)
           
static Integer mapKey(byte[] b, int length)
           
static byte[] padHead(byte[] a, int length)
           
static byte[] padTail(byte[] a, int length)
           
static int putBigDecimal(byte[] bytes, int offset, BigDecimal val)
          Put a BigDecimal value out to the specified byte array position.
static int putByte(byte[] bytes, int offset, byte b)
          Write a single byte out to the specified byte array position.
static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes, int srcOffset, int srcLength)
          Put bytes at the specified byte array position.
static int putDouble(byte[] bytes, int offset, double d)
           
static int putFloat(byte[] bytes, int offset, float f)
           
static int putInt(byte[] bytes, int offset, int val)
          Put an int value out to the specified byte array position.
static int putLong(byte[] bytes, int offset, long val)
          Put a long value out to the specified byte array position.
static int putShort(byte[] bytes, int offset, short val)
          Put a short value out to the specified byte array position.
static void random(byte[] b)
          Fill given array with random bytes.
static void random(byte[] b, int offset, int length)
          Fill given array with random bytes at the specified position.
static byte[] readByteArray(DataInput in)
          Read byte-array written with a WritableableUtils.vint prefix.
static byte[] readByteArrayThrowsRuntime(DataInput in)
          Read byte-array written with a WritableableUtils.vint prefix.
static String readStringFixedSize(DataInput in, int size)
          Reads a fixed-size field and interprets it as a string padded with zeros.
static long readVLong(byte[] buffer, int offset)
          Reads a zero-compressed encoded long from input stream and returns it.
static byte[][] split(byte[] a, byte[] b, boolean inclusive, int num)
          Split passed range.
static byte[][] split(byte[] a, byte[] b, int num)
          Split passed range.
static boolean startsWith(byte[] bytes, byte[] prefix)
          Return true if the byte array on the right is a prefix of the byte array on the left.
static byte[] tail(byte[] a, int length)
           
static BigDecimal toBigDecimal(byte[] bytes)
          Converts a byte array to a BigDecimal
static BigDecimal toBigDecimal(byte[] bytes, int offset, int length)
          Converts a byte array to a BigDecimal value
static byte toBinaryFromHex(byte ch)
          Takes a ASCII digit in the range A-F0-9 and returns the corresponding integer/ordinal value.
static boolean toBoolean(byte[] b)
          Reverses toBytes(boolean)
static byte[][] toByteArrays(byte[] column)
           
static byte[][] toByteArrays(String column)
           
static byte[][] toByteArrays(String[] t)
           
static byte[] toBytes(BigDecimal val)
          Convert a BigDecimal value to a byte array
static byte[] toBytes(boolean b)
          Convert a boolean to a byte array.
static byte[] toBytes(ByteBuffer buf)
          Returns a new byte array, copied from the given buf, from the index 0 (inclusive) to the limit (exclusive), regardless of the current position.
static byte[] toBytes(double d)
          Serialize a double as the IEEE 754 double format output.
static byte[] toBytes(float f)
           
static byte[] toBytes(int val)
          Convert an int value to a byte array.
static byte[] toBytes(long val)
          Convert a long value to a byte array using big-endian.
static byte[] toBytes(short val)
          Convert a short value to a byte array of SIZEOF_SHORT bytes long.
static byte[] toBytes(String s)
          Converts a string to a UTF-8 byte array.
static byte[] toBytesBinary(String in)
           
static double toDouble(byte[] bytes)
           
static double toDouble(byte[] bytes, int offset)
           
static float toFloat(byte[] bytes)
          Presumes float encoded as IEEE 754 floating-point "single format"
static float toFloat(byte[] bytes, int offset)
          Presumes float encoded as IEEE 754 floating-point "single format"
static int toInt(byte[] bytes)
          Converts a byte array to an int value
static int toInt(byte[] bytes, int offset)
          Converts a byte array to an int value
static int toInt(byte[] bytes, int offset, int length)
          Converts a byte array to an int value
static long toLong(byte[] bytes)
          Converts a byte array to a long value.
static long toLong(byte[] bytes, int offset)
          Converts a byte array to a long value.
static long toLong(byte[] bytes, int offset, int length)
          Converts a byte array to a long value.
static short toShort(byte[] bytes)
          Converts a byte array to a short value
static short toShort(byte[] bytes, int offset)
          Converts a byte array to a short value
static short toShort(byte[] bytes, int offset, int length)
          Converts a byte array to a short value
static String toString(byte[] b)
           
static String toString(byte[] b, int off, int len)
          This method will convert utf8 encoded bytes into a string.
static String toString(byte[] b1, String sep, byte[] b2)
          Joins two byte arrays together using a separator.
static String toStringBinary(byte[] b)
          Write a printable representation of a byte array.
static String toStringBinary(byte[] b, int off, int len)
          Write a printable representation of a byte array.
static String toStringBinary(ByteBuffer buf)
          Converts the given byte buffer to a printable representation, from the index 0 (inclusive) to the limit (exclusive), regardless of the current position.
static int unsignedBinarySearch(byte[] a, int fromIndex, int toIndex, byte key)
          Search sorted array "a" for byte "key".
static byte[] unsignedCopyAndIncrement(byte[] input)
          Treat the byte[] as an unsigned series of bytes, most significant bits first.
static byte[] vintToBytes(long vint)
           
static int writeByteArray(byte[] tgt, int tgtOffset, byte[] src, int srcOffset, int srcLength)
          Write byte-array from src to tgt with a vint length prefix.
static void writeByteArray(DataOutput out, byte[] b)
          Write byte-array with a WritableableUtils.vint prefix.
static void writeByteArray(DataOutput out, byte[] b, int offset, int length)
          Write byte-array to out with a vint length prefix.
static void writeStringFixedSize(DataOutput out, String s, int size)
          Writes a string as a fixed-size field, padded with zeros.
static void zero(byte[] b)
          Fill given array with zeros.
static void zero(byte[] b, int offset, int length)
          Fill given array with zeros at the specified position.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SIZEOF_BOOLEAN

public static final int SIZEOF_BOOLEAN
Size of boolean in bytes

See Also:
Constant Field Values

SIZEOF_BYTE

public static final int SIZEOF_BYTE
Size of byte in bytes

See Also:
Constant Field Values

SIZEOF_CHAR

public static final int SIZEOF_CHAR
Size of char in bytes

See Also:
Constant Field Values

SIZEOF_DOUBLE

public static final int SIZEOF_DOUBLE
Size of double in bytes

See Also:
Constant Field Values

SIZEOF_FLOAT

public static final int SIZEOF_FLOAT
Size of float in bytes

See Also:
Constant Field Values

SIZEOF_INT

public static final int SIZEOF_INT
Size of int in bytes

See Also:
Constant Field Values

SIZEOF_LONG

public static final int SIZEOF_LONG
Size of long in bytes

See Also:
Constant Field Values

SIZEOF_SHORT

public static final int SIZEOF_SHORT
Size of short in bytes

See Also:
Constant Field Values

ESTIMATED_HEAP_TAX

public static final int ESTIMATED_HEAP_TAX
Estimate of size cost to pay beyond payload in jvm for instance of byte []. Estimate based on study of jhat and jprofiler numbers.

See Also:
Constant Field Values

BYTES_COMPARATOR

public static Comparator<byte[]> BYTES_COMPARATOR
Pass this to TreeMaps where byte [] are keys.


BYTES_RAWCOMPARATOR

public static org.apache.hadoop.io.RawComparator<byte[]> BYTES_RAWCOMPARATOR
Use comparing byte arrays, byte-by-byte

Constructor Detail

Bytes

public Bytes()
Method Detail

readByteArray

public static byte[] readByteArray(DataInput in)
                            throws IOException
Read byte-array written with a WritableableUtils.vint prefix.

Parameters:
in - Input to read from.
Returns:
byte array read off in
Throws:
IOException - e

readByteArrayThrowsRuntime

public static byte[] readByteArrayThrowsRuntime(DataInput in)
Read byte-array written with a WritableableUtils.vint prefix. IOException is converted to a RuntimeException.

Parameters:
in - Input to read from.
Returns:
byte array read off in

writeByteArray

public static void writeByteArray(DataOutput out,
                                  byte[] b)
                           throws IOException
Write byte-array with a WritableableUtils.vint prefix.

Parameters:
out - output stream to be written to
b - array to write
Throws:
IOException - e

writeByteArray

public static void writeByteArray(DataOutput out,
                                  byte[] b,
                                  int offset,
                                  int length)
                           throws IOException
Write byte-array to out with a vint length prefix.

Parameters:
out - output stream
b - array
offset - offset into array
length - length past offset
Throws:
IOException - e

writeByteArray

public static int writeByteArray(byte[] tgt,
                                 int tgtOffset,
                                 byte[] src,
                                 int srcOffset,
                                 int srcLength)
Write byte-array from src to tgt with a vint length prefix.

Parameters:
tgt - target array
tgtOffset - offset into target array
src - source array
srcOffset - source offset
srcLength - source length
Returns:
New offset in src array.

putBytes

public static int putBytes(byte[] tgtBytes,
                           int tgtOffset,
                           byte[] srcBytes,
                           int srcOffset,
                           int srcLength)
Put bytes at the specified byte array position.

Parameters:
tgtBytes - the byte array
tgtOffset - position in the array
srcBytes - array to write out
srcOffset - source offset
srcLength - source length
Returns:
incremented offset

putByte

public static int putByte(byte[] bytes,
                          int offset,
                          byte b)
Write a single byte out to the specified byte array position.

Parameters:
bytes - the byte array
offset - position in the array
b - byte to write out
Returns:
incremented offset

toBytes

public static byte[] toBytes(ByteBuffer buf)
Returns a new byte array, copied from the given buf, from the index 0 (inclusive) to the limit (exclusive), regardless of the current position. The position and the other index parameters are not changed.

Parameters:
buf - a byte buffer
Returns:
the byte array
See Also:
getBytes(ByteBuffer)

toString

public static String toString(byte[] b)
Parameters:
b - Presumed UTF-8 encoded byte array.
Returns:
String made from b

toString

public static String toString(byte[] b1,
                              String sep,
                              byte[] b2)
Joins two byte arrays together using a separator.

Parameters:
b1 - The first byte array.
sep - The separator to use.
b2 - The second byte array.

toString

public static String toString(byte[] b,
                              int off,
                              int len)
This method will convert utf8 encoded bytes into a string. If the given byte array is null, this method will return null.

Parameters:
b - Presumed UTF-8 encoded byte array.
off - offset into array
len - length of utf-8 sequence
Returns:
String made from b or null

toStringBinary

public static String toStringBinary(byte[] b)
Write a printable representation of a byte array.

Parameters:
b - byte array
Returns:
string
See Also:
toStringBinary(byte[], int, int)

toStringBinary

public static String toStringBinary(ByteBuffer buf)
Converts the given byte buffer to a printable representation, from the index 0 (inclusive) to the limit (exclusive), regardless of the current position. The position and the other index parameters are not changed.

Parameters:
buf - a byte buffer
Returns:
a string representation of the buffer's binary contents
See Also:
toBytes(ByteBuffer), getBytes(ByteBuffer)

toStringBinary

public static String toStringBinary(byte[] b,
                                    int off,
                                    int len)
Write a printable representation of a byte array. Non-printable characters are hex escaped in the format \\x%02X, eg: \x00 \x05 etc

Parameters:
b - array to write out
off - offset to start at
len - length to write
Returns:
string output

toBinaryFromHex

public static byte toBinaryFromHex(byte ch)
Takes a ASCII digit in the range A-F0-9 and returns the corresponding integer/ordinal value.

Parameters:
ch - The hex digit.
Returns:
The converted hex value as a byte.

toBytesBinary

public static byte[] toBytesBinary(String in)

toBytes

public static byte[] toBytes(String s)
Converts a string to a UTF-8 byte array.

Parameters:
s - string
Returns:
the byte array

toBytes

public static byte[] toBytes(boolean b)
Convert a boolean to a byte array. True becomes -1 and false becomes 0.

Parameters:
b - value
Returns:
b encoded in a byte array.

toBoolean

public static boolean toBoolean(byte[] b)
Reverses toBytes(boolean)

Parameters:
b - array
Returns:
True or false.

toBytes

public static byte[] toBytes(long val)
Convert a long value to a byte array using big-endian.

Parameters:
val - value to convert
Returns:
the byte array

toLong

public static long toLong(byte[] bytes)
Converts a byte array to a long value. Reverses toBytes(long)

Parameters:
bytes - array
Returns:
the long value

toLong

public static long toLong(byte[] bytes,
                          int offset)
Converts a byte array to a long value. Assumes there will be SIZEOF_LONG bytes available.

Parameters:
bytes - bytes
offset - offset
Returns:
the long value

toLong

public static long toLong(byte[] bytes,
                          int offset,
                          int length)
Converts a byte array to a long value.

Parameters:
bytes - array of bytes
offset - offset into array
length - length of data (must be SIZEOF_LONG)
Returns:
the long value
Throws:
IllegalArgumentException - if length is not SIZEOF_LONG or if there's not enough room in the array at the offset indicated.

putLong

public static int putLong(byte[] bytes,
                          int offset,
                          long val)
Put a long value out to the specified byte array position.

Parameters:
bytes - the byte array
offset - position in the array
val - long to write out
Returns:
incremented offset
Throws:
IllegalArgumentException - if the byte array given doesn't have enough room at the offset specified.

toFloat

public static float toFloat(byte[] bytes)
Presumes float encoded as IEEE 754 floating-point "single format"

Parameters:
bytes - byte array
Returns:
Float made from passed byte array.

toFloat

public static float toFloat(byte[] bytes,
                            int offset)
Presumes float encoded as IEEE 754 floating-point "single format"

Parameters:
bytes - array to convert
offset - offset into array
Returns:
Float made from passed byte array.

putFloat

public static int putFloat(byte[] bytes,
                           int offset,
                           float f)
Parameters:
bytes - byte array
offset - offset to write to
f - float value
Returns:
New offset in bytes

toBytes

public static byte[] toBytes(float f)
Parameters:
f - float value
Returns:
the float represented as byte []

toDouble

public static double toDouble(byte[] bytes)
Parameters:
bytes - byte array
Returns:
Return double made from passed bytes.

toDouble

public static double toDouble(byte[] bytes,
                              int offset)
Parameters:
bytes - byte array
offset - offset where double is
Returns:
Return double made from passed bytes.

putDouble

public static int putDouble(byte[] bytes,
                            int offset,
                            double d)
Parameters:
bytes - byte array
offset - offset to write to
d - value
Returns:
New offset into array bytes

toBytes

public static byte[] toBytes(double d)
Serialize a double as the IEEE 754 double format output. The resultant array will be 8 bytes long.

Parameters:
d - value
Returns:
the double represented as byte []

toBytes

public static byte[] toBytes(int val)
Convert an int value to a byte array. Big-endian. Same as what DataOutputStream.writeInt does.

Parameters:
val - value
Returns:
the byte array

toInt

public static int toInt(byte[] bytes)
Converts a byte array to an int value

Parameters:
bytes - byte array
Returns:
the int value

toInt

public static int toInt(byte[] bytes,
                        int offset)
Converts a byte array to an int value

Parameters:
bytes - byte array
offset - offset into array
Returns:
the int value

toInt

public static int toInt(byte[] bytes,
                        int offset,
                        int length)
Converts a byte array to an int value

Parameters:
bytes - byte array
offset - offset into array
length - length of int (has to be SIZEOF_INT)
Returns:
the int value
Throws:
IllegalArgumentException - if length is not SIZEOF_INT or if there's not enough room in the array at the offset indicated.

putInt

public static int putInt(byte[] bytes,
                         int offset,
                         int val)
Put an int value out to the specified byte array position.

Parameters:
bytes - the byte array
offset - position in the array
val - int to write out
Returns:
incremented offset
Throws:
IllegalArgumentException - if the byte array given doesn't have enough room at the offset specified.

toBytes

public static byte[] toBytes(short val)
Convert a short value to a byte array of SIZEOF_SHORT bytes long.

Parameters:
val - value
Returns:
the byte array

toShort

public static short toShort(byte[] bytes)
Converts a byte array to a short value

Parameters:
bytes - byte array
Returns:
the short value

toShort

public static short toShort(byte[] bytes,
                            int offset)
Converts a byte array to a short value

Parameters:
bytes - byte array
offset - offset into array
Returns:
the short value

toShort

public static short toShort(byte[] bytes,
                            int offset,
                            int length)
Converts a byte array to a short value

Parameters:
bytes - byte array
offset - offset into array
length - length, has to be SIZEOF_SHORT
Returns:
the short value
Throws:
IllegalArgumentException - if length is not SIZEOF_SHORT or if there's not enough room in the array at the offset indicated.

getBytes

public static byte[] getBytes(ByteBuffer buf)
Returns a new byte array, copied from the given buf, from the position (inclusive) to the limit (exclusive). The position and the other index parameters are not changed.

Parameters:
buf - a byte buffer
Returns:
the byte array
See Also:
toBytes(ByteBuffer)

putShort

public static int putShort(byte[] bytes,
                           int offset,
                           short val)
Put a short value out to the specified byte array position.

Parameters:
bytes - the byte array
offset - position in the array
val - short to write out
Returns:
incremented offset
Throws:
IllegalArgumentException - if the byte array given doesn't have enough room at the offset specified.

toBytes

public static byte[] toBytes(BigDecimal val)
Convert a BigDecimal value to a byte array

Parameters:
val -
Returns:
the byte array

toBigDecimal

public static BigDecimal toBigDecimal(byte[] bytes)
Converts a byte array to a BigDecimal

Parameters:
bytes -
Returns:
the char value

toBigDecimal

public static BigDecimal toBigDecimal(byte[] bytes,
                                      int offset,
                                      int length)
Converts a byte array to a BigDecimal value

Parameters:
bytes -
offset -
length -
Returns:
the char value

putBigDecimal

public static int putBigDecimal(byte[] bytes,
                                int offset,
                                BigDecimal val)
Put a BigDecimal value out to the specified byte array position.

Parameters:
bytes - the byte array
offset - position in the array
val - BigDecimal to write out
Returns:
incremented offset

vintToBytes

public static byte[] vintToBytes(long vint)
Parameters:
vint - Integer to make a vint of.
Returns:
Vint as bytes array.

bytesToVint

public static long bytesToVint(byte[] buffer)
Parameters:
buffer - buffer to convert
Returns:
vint bytes as an integer.

readVLong

public static long readVLong(byte[] buffer,
                             int offset)
                      throws IOException
Reads a zero-compressed encoded long from input stream and returns it.

Parameters:
buffer - Binary array
offset - Offset into array at which vint begins.
Returns:
deserialized long from stream.
Throws:
IOException - e

compareTo

public static int compareTo(byte[] left,
                            byte[] right)
Parameters:
left - left operand
right - right operand
Returns:
0 if equal, < 0 if left is less than right, etc.

compareTo

public static int compareTo(byte[] buffer1,
                            int offset1,
                            int length1,
                            byte[] buffer2,
                            int offset2,
                            int length2)
Lexicographically compare two arrays.

Parameters:
buffer1 - left operand
buffer2 - right operand
offset1 - Where to start comparing in the left buffer
offset2 - Where to start comparing in the right buffer
length1 - How much to compare from the left buffer
length2 - How much to compare from the right buffer
Returns:
0 if equal, < 0 if left is less than right, etc.

equals

public static boolean equals(byte[] left,
                             byte[] right)
Parameters:
left - left operand
right - right operand
Returns:
True if equal

equals

public static boolean equals(byte[] left,
                             int leftOffset,
                             int leftLen,
                             byte[] right,
                             int rightOffset,
                             int rightLen)

startsWith

public static boolean startsWith(byte[] bytes,
                                 byte[] prefix)
Return true if the byte array on the right is a prefix of the byte array on the left.


hashCode

public static int hashCode(byte[] b)
Parameters:
b - bytes to hash
Returns:
Runs WritableComparator.hashBytes(byte[], int) on the passed in array. This method is what Text and ImmutableBytesWritable use calculating hash code.

hashCode

public static int hashCode(byte[] b,
                           int length)
Parameters:
b - value
length - length of the value
Returns:
Runs WritableComparator.hashBytes(byte[], int) on the passed in array. This method is what Text and ImmutableBytesWritable use calculating hash code.

mapKey

public static Integer mapKey(byte[] b)
Parameters:
b - bytes to hash
Returns:
A hash of b as an Integer that can be used as key in Maps.

mapKey

public static Integer mapKey(byte[] b,
                             int length)
Parameters:
b - bytes to hash
length - length to hash
Returns:
A hash of b as an Integer that can be used as key in Maps.

add

public static byte[] add(byte[] a,
                         byte[] b)
Parameters:
a - lower half
b - upper half
Returns:
New array that has a in lower half and b in upper half.

add

public static byte[] add(byte[] a,
                         byte[] b,
                         byte[] c)
Parameters:
a - first third
b - second third
c - third third
Returns:
New array made from a, b and c

head

public static byte[] head(byte[] a,
                          int length)
Parameters:
a - array
length - amount of bytes to grab
Returns:
First length bytes from a

tail

public static byte[] tail(byte[] a,
                          int length)
Parameters:
a - array
length - amount of bytes to snarf
Returns:
Last length bytes from a

padHead

public static byte[] padHead(byte[] a,
                             int length)
Parameters:
a - array
length - new array size
Returns:
Value in a plus length prepended 0 bytes

padTail

public static byte[] padTail(byte[] a,
                             int length)
Parameters:
a - array
length - new array size
Returns:
Value in a plus length appended 0 bytes

split

public static byte[][] split(byte[] a,
                             byte[] b,
                             int num)
Split passed range. Expensive operation relatively. Uses BigInteger math. Useful splitting ranges for MapReduce jobs.

Parameters:
a - Beginning of range
b - End of range
num - Number of times to split range. Pass 1 if you want to split the range in two; i.e. one split.
Returns:
Array of dividing values

split

public static byte[][] split(byte[] a,
                             byte[] b,
                             boolean inclusive,
                             int num)
Split passed range. Expensive operation relatively. Uses BigInteger math. Useful splitting ranges for MapReduce jobs.

Parameters:
a - Beginning of range
b - End of range
inclusive - Whether the end of range is prefix-inclusive or is considered an exclusive boundary. Automatic splits are generally exclusive and manual splits with an explicit range utilize an inclusive end of range.
num - Number of times to split range. Pass 1 if you want to split the range in two; i.e. one split.
Returns:
Array of dividing values

iterateOnSplits

public static Iterable<byte[]> iterateOnSplits(byte[] a,
                                               byte[] b,
                                               int num)
Iterate over keys within the passed range, splitting at an [a,b) boundary.


iterateOnSplits

public static Iterable<byte[]> iterateOnSplits(byte[] a,
                                               byte[] b,
                                               boolean inclusive,
                                               int num)
Iterate over keys within the passed range.


hashCode

public static int hashCode(byte[] bytes,
                           int offset,
                           int length)
Parameters:
bytes - array to hash
offset - offset to start from
length - length to hash

toByteArrays

public static byte[][] toByteArrays(String[] t)
Parameters:
t - operands
Returns:
Array of byte arrays made from passed array of Text

toByteArrays

public static byte[][] toByteArrays(String column)
Parameters:
column - operand
Returns:
A byte array of a byte array where first and only entry is column

toByteArrays

public static byte[][] toByteArrays(byte[] column)
Parameters:
column - operand
Returns:
A byte array of a byte array where first and only entry is column

binarySearch

public static int binarySearch(byte[][] arr,
                               byte[] key,
                               int offset,
                               int length,
                               org.apache.hadoop.io.RawComparator<byte[]> comparator)
Binary search for keys in indexes.

Parameters:
arr - array of byte arrays to search for
key - the key you want to find
offset - the offset in the key you want to find
length - the length of the key
comparator - a comparator to compare.
Returns:
zero-based index of the key, if the key is present in the array. Otherwise, a value -(i + 1) such that the key is between arr[i - 1] and arr[i] non-inclusively, where i is in [0, i], if we define arr[-1] = -Inf and arr[N] = Inf for an N-element array. The above means that this function can return 2N + 1 different values ranging from -(N + 1) to N - 1.

incrementBytes

public static byte[] incrementBytes(byte[] value,
                                    long amount)
Bytewise binary increment/deincrement of long contained in byte array on given amount.

Parameters:
value - - array of bytes containing long (length <= SIZEOF_LONG)
amount - value will be incremented on (deincremented if negative)
Returns:
array of bytes containing incremented long (length == SIZEOF_LONG)

writeStringFixedSize

public static void writeStringFixedSize(DataOutput out,
                                        String s,
                                        int size)
                                 throws IOException
Writes a string as a fixed-size field, padded with zeros.

Throws:
IOException

readStringFixedSize

public static String readStringFixedSize(DataInput in,
                                         int size)
                                  throws IOException
Reads a fixed-size field and interprets it as a string padded with zeros.

Throws:
IOException

copy

public static byte[] copy(byte[] bytes)
Copy the byte array given in parameter and return an instance of a new byte array with the same length and the same content.

Parameters:
bytes - the byte array to duplicate
Returns:
a copy of the given byte array

copy

public static byte[] copy(byte[] bytes,
                          int offset,
                          int length)
Copy the byte array given in parameter and return an instance of a new byte array with the same length and the same content.

Parameters:
bytes - the byte array to copy from
offset -
length -
Returns:
a copy of the given designated byte array

unsignedBinarySearch

public static int unsignedBinarySearch(byte[] a,
                                       int fromIndex,
                                       int toIndex,
                                       byte key)
Search sorted array "a" for byte "key". I can't remember if I wrote this or copied it from somewhere. (mcorgan)

Parameters:
a - Array to search. Entries must be sorted and unique.
fromIndex - First index inclusive of "a" to include in the search.
toIndex - Last index exclusive of "a" to include in the search.
key - The byte to search for.
Returns:
The index of key if found. If not found, return -(index + 1), where negative indicates "not found" and the "index + 1" handles the "-0" case.

unsignedCopyAndIncrement

public static byte[] unsignedCopyAndIncrement(byte[] input)
Treat the byte[] as an unsigned series of bytes, most significant bits first. Start by adding 1 to the rightmost bit/byte and carry over all overflows to the more significant bits/bytes.

Parameters:
input - The byte[] to increment.
Returns:
The incremented copy of "in". May be same length or 1 byte longer.

equals

public static boolean equals(List<byte[]> a,
                             List<byte[]> b)

isSorted

public static boolean isSorted(Collection<byte[]> arrays)

getUtf8ByteArrays

public static List<byte[]> getUtf8ByteArrays(List<String> strings)

indexOf

public static int indexOf(byte[] array,
                          byte target)
Returns the index of the first appearance of the value target in array.

Parameters:
array - an array of byte values, possibly empty
target - a primitive byte value
Returns:
the least index i for which array[i] == target, or -1 if no such index exists.

indexOf

public static int indexOf(byte[] array,
                          byte[] target)
Returns the start position of the first occurrence of the specified target within array, or -1 if there is no such occurrence.

More formally, returns the lowest index i such that java.util.Arrays.copyOfRange(array, i, i + target.length) contains exactly the same elements as target.

Parameters:
array - the array to search for the sequence target
target - the array to search for as a sub-sequence of array

contains

public static boolean contains(byte[] array,
                               byte target)
Parameters:
array - an array of byte values, possibly empty
target - a primitive byte value
Returns:
true if target is present as an element anywhere in array.

contains

public static boolean contains(byte[] array,
                               byte[] target)
Parameters:
array - an array of byte values, possibly empty
target - an array of byte
Returns:
true if target is present anywhere in array

zero

public static void zero(byte[] b)
Fill given array with zeros.

Parameters:
b - array which needs to be filled with zeros

zero

public static void zero(byte[] b,
                        int offset,
                        int length)
Fill given array with zeros at the specified position.

Parameters:
b -
offset -
length -

random

public static void random(byte[] b)
Fill given array with random bytes.

Parameters:
b - array which needs to be filled with random bytes

random

public static void random(byte[] b,
                          int offset,
                          int length)
Fill given array with random bytes at the specified position.

Parameters:
b -
offset -
length -


Copyright © 2013 The Apache Software Foundation. All Rights Reserved.