org.apache.hadoop.hive.serde2.lazy
Class LazyLong

java.lang.Object
  extended by org.apache.hadoop.hive.serde2.lazy.LazyObjectBase
      extended by org.apache.hadoop.hive.serde2.lazy.LazyObject<OI>
          extended by org.apache.hadoop.hive.serde2.lazy.LazyPrimitive<LazyLongObjectInspector,org.apache.hadoop.io.LongWritable>
              extended by org.apache.hadoop.hive.serde2.lazy.LazyLong
Direct Known Subclasses:
LazyDioLong

public class LazyLong
extends LazyPrimitive<LazyLongObjectInspector,org.apache.hadoop.io.LongWritable>

LazyObject for storing a value of Long.

Part of the code is adapted from Apache Harmony Project. As with the specification, this implementation relied on code laid out in Henry S. Warren, Jr.'s Hacker's Delight, (Addison Wesley, 2002) as well as The Aggregate's Magic Algorithms.


Field Summary
 
Fields inherited from class org.apache.hadoop.hive.serde2.lazy.LazyPrimitive
data, isNull
 
Fields inherited from class org.apache.hadoop.hive.serde2.lazy.LazyObject
oi
 
Constructor Summary
LazyLong(LazyLong copy)
           
LazyLong(LazyLongObjectInspector oi)
           
 
Method Summary
 void init(ByteArrayRef bytes, int start, int length)
          Set the data for this LazyObjectBase.
static long parseLong(byte[] bytes, int start, int length)
          Parses the string argument as if it was a long value and returns the result.
static long parseLong(byte[] bytes, int start, int length, int radix)
          Parses the string argument as if it was an long value and returns the result.
static void writeUTF8(OutputStream out, long i)
          Writes out the text representation of an integer using base 10 to an OutputStream in UTF-8 encoding.
static void writeUTF8NoException(OutputStream out, long i)
           
 
Methods inherited from class org.apache.hadoop.hive.serde2.lazy.LazyPrimitive
getObject, getWritableObject, hashCode, logExceptionMessage, toString
 
Methods inherited from class org.apache.hadoop.hive.serde2.lazy.LazyObject
getInspector, setInspector
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LazyLong

public LazyLong(LazyLongObjectInspector oi)

LazyLong

public LazyLong(LazyLong copy)
Method Detail

init

public void init(ByteArrayRef bytes,
                 int start,
                 int length)
Description copied from class: LazyObjectBase
Set the data for this LazyObjectBase. We take ByteArrayRef instead of byte[] so that we will be able to drop the reference to byte[] by a single assignment. The ByteArrayRef object can be reused across multiple rows.

Specified by:
init in class LazyObjectBase
Parameters:
bytes - The wrapper of the byte[].
start - The start position inside the bytes.
length - The length of the data, starting from "start"
See Also:
ByteArrayRef

parseLong

public static long parseLong(byte[] bytes,
                             int start,
                             int length)
Parses the string argument as if it was a long value and returns the result. Throws NumberFormatException if the string does not represent a long quantity.

Parameters:
bytes -
start -
length - a UTF-8 encoded string representation of a long quantity.
Returns:
long the value represented by the argument
Throws:
NumberFormatException - if the argument could not be parsed as a long quantity.

parseLong

public static long parseLong(byte[] bytes,
                             int start,
                             int length,
                             int radix)
Parses the string argument as if it was an long value and returns the result. Throws NumberFormatException if the string does not represent an long quantity. The second argument specifies the radix to use when parsing the value.

Parameters:
bytes -
start -
length - a UTF-8 encoded string representation of a long quantity.
radix - the base to use for conversion.
Returns:
the value represented by the argument
Throws:
NumberFormatException - if the argument could not be parsed as an long quantity.

writeUTF8

public static void writeUTF8(OutputStream out,
                             long i)
                      throws IOException
Writes out the text representation of an integer using base 10 to an OutputStream in UTF-8 encoding. Note: division by a constant (like 10) is much faster than division by a variable. That's one of the reasons that we don't make radix a parameter here.

Parameters:
out - the outputstream to write to
i - an int to write out
Throws:
IOException

writeUTF8NoException

public static void writeUTF8NoException(OutputStream out,
                                        long i)


Copyright © 2011 The Apache Software Foundation