You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by zs...@apache.org on 2010/01/21 10:00:43 UTC
svn commit: r901604 [2/2] - in
/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy: ./
objectinspector/ objectinspector/primitive/
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazySimpleSerDe.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazySimpleSerDe.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazySimpleSerDe.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazySimpleSerDe.java Thu Jan 21 08:59:22 2010
@@ -50,25 +50,26 @@
import org.apache.hadoop.io.Writable;
/**
- * LazySimpleSerDe can be used to read the same data format as
+ * LazySimpleSerDe can be used to read the same data format as
* MetadataTypedColumnsetSerDe and TCTLSeparatedProtocol.
*
- * However, LazySimpleSerDe creates Objects in a lazy way, to
- * provide better performance.
+ * However, LazySimpleSerDe creates Objects in a lazy way, to provide better
+ * performance.
*
- * Also LazySimpleSerDe outputs typed columns instead of treating
- * all columns as String like MetadataTypedColumnsetSerDe.
+ * Also LazySimpleSerDe outputs typed columns instead of treating all columns as
+ * String like MetadataTypedColumnsetSerDe.
*/
public class LazySimpleSerDe implements SerDe {
- public static final Log LOG = LogFactory.getLog(
- LazySimpleSerDe.class.getName());
+ public static final Log LOG = LogFactory.getLog(LazySimpleSerDe.class
+ .getName());
- final public static byte[] DefaultSeparators = {(byte)1, (byte)2, (byte)3};
+ final public static byte[] DefaultSeparators = { (byte) 1, (byte) 2, (byte) 3 };
private ObjectInspector cachedObjectInspector;
- private boolean useJSONSerialize; // use json to serialize
+ private boolean useJSONSerialize; // use json to serialize
+ @Override
public String toString() {
return getClass().toString()
+ "["
@@ -85,16 +86,19 @@
/**
* Return the byte value of the number string.
- * @param altValue The string containing a number.
- * @param defaultVal If the altValue does not represent a number,
- * return the defaultVal.
+ *
+ * @param altValue
+ * The string containing a number.
+ * @param defaultVal
+ * If the altValue does not represent a number, return the
+ * defaultVal.
*/
public static byte getByte(String altValue, byte defaultVal) {
if (altValue != null && altValue.length() > 0) {
try {
return Byte.valueOf(altValue).byteValue();
- } catch(NumberFormatException e) {
- return (byte)altValue.charAt(0);
+ } catch (NumberFormatException e) {
+ return (byte) altValue.charAt(0);
}
}
return defaultVal;
@@ -108,12 +112,12 @@
boolean lastColumnTakesRest;
List<String> columnNames;
List<TypeInfo> columnTypes;
-
+
boolean escaped;
byte escapeChar;
boolean[] needsEscape;
boolean jsonSerialize;
-
+
public List<TypeInfo> getColumnTypes() {
return columnTypes;
}
@@ -121,7 +125,7 @@
public List<String> getColumnNames() {
return columnNames;
}
-
+
public byte[] getSeparators() {
return separators;
}
@@ -141,13 +145,15 @@
public boolean isLastColumnTakesRest() {
return lastColumnTakesRest;
}
-
+
public boolean isEscaped() {
return escaped;
}
+
public byte getEscapeChar() {
return escapeChar;
}
+
public boolean[] getNeedsEscape() {
return needsEscape;
}
@@ -160,44 +166,45 @@
}
/**
- * @param jsonSerialize the jsonSerialize to set
+ * @param jsonSerialize
+ * the jsonSerialize to set
*/
public void setJsonSerialize(boolean jsonSerialize) {
this.jsonSerialize = jsonSerialize;
}
-
+
}
SerDeParameters serdeParams = null;
/**
- * Initialize the SerDe given the parameters.
- * serialization.format: separator char or byte code (only supports
- * byte-value up to 127)
- * columns: ","-separated column names
- * columns.types: ",", ":", or ";"-separated column types
- * @see SerDe#initialize(Configuration, Properties)
+ * Initialize the SerDe given the parameters. serialization.format: separator
+ * char or byte code (only supports byte-value up to 127) columns:
+ * ","-separated column names columns.types: ",", ":", or ";"-separated column
+ * types
+ *
+ * @see SerDe#initialize(Configuration, Properties)
*/
- public void initialize(Configuration job, Properties tbl)
- throws SerDeException {
+ public void initialize(Configuration job, Properties tbl)
+ throws SerDeException {
serdeParams = LazySimpleSerDe.initSerdeParams(job, tbl, getClass()
.getName());
// Create the ObjectInspectors for the fields
- cachedObjectInspector = LazyFactory.createLazyStructInspector(
- serdeParams.getColumnNames(), serdeParams.getColumnTypes(),
- serdeParams.getSeparators(), serdeParams.getNullSequence(),
- serdeParams.isLastColumnTakesRest(),
- serdeParams.isEscaped(),
- serdeParams.getEscapeChar());
+ cachedObjectInspector = LazyFactory.createLazyStructInspector(serdeParams
+ .getColumnNames(), serdeParams.getColumnTypes(), serdeParams
+ .getSeparators(), serdeParams.getNullSequence(), serdeParams
+ .isLastColumnTakesRest(), serdeParams.isEscaped(), serdeParams
+ .getEscapeChar());
- if (serdeParams.isJsonSerialize())
+ if (serdeParams.isJsonSerialize()) {
setUseJSONSerialize(true);
-
+ }
+
cachedLazyStruct = (LazyStruct) LazyFactory
- .createLazyObject(cachedObjectInspector);
-
+ .createLazyObject(cachedObjectInspector);
+
LOG.debug("LazySimpleSerDe initialized with: columnNames="
+ serdeParams.columnNames + " columnTypes=" + serdeParams.columnTypes
+ " separator=" + Arrays.asList(serdeParams.separators)
@@ -232,8 +239,9 @@
.equalsIgnoreCase("true"));
String useJsonSerialize = tbl
- .getProperty(Constants.SERIALIZATION_USE_JSON_OBJECTS);
- serdeParams.jsonSerialize = (useJsonSerialize != null && useJsonSerialize.equalsIgnoreCase("true"));
+ .getProperty(Constants.SERIALIZATION_USE_JSON_OBJECTS);
+ serdeParams.jsonSerialize = (useJsonSerialize != null && useJsonSerialize
+ .equalsIgnoreCase("true"));
// Read the configuration parameters
String columnNameProperty = tbl.getProperty(Constants.LIST_COLUMNS);
@@ -251,8 +259,9 @@
// Default type: all string
StringBuilder sb = new StringBuilder();
for (int i = 0; i < serdeParams.columnNames.size(); i++) {
- if (i > 0)
+ if (i > 0) {
sb.append(":");
+ }
sb.append(Constants.STRING_TYPE_NAME);
}
columnTypeProperty = sb.toString();
@@ -271,37 +280,39 @@
// Create the LazyObject for storing the rows
serdeParams.rowTypeInfo = TypeInfoFactory.getStructTypeInfo(
serdeParams.columnNames, serdeParams.columnTypes);
-
+
// Get the escape information
String escapeProperty = tbl.getProperty(Constants.ESCAPE_CHAR);
serdeParams.escaped = (escapeProperty != null);
if (serdeParams.escaped) {
- serdeParams.escapeChar = getByte(escapeProperty, (byte)'\\');
+ serdeParams.escapeChar = getByte(escapeProperty, (byte) '\\');
}
if (serdeParams.escaped) {
serdeParams.needsEscape = new boolean[128];
- for (int i=0; i<128; i++) {
+ for (int i = 0; i < 128; i++) {
serdeParams.needsEscape[i] = false;
}
serdeParams.needsEscape[serdeParams.escapeChar] = true;
- for (int i=0; i<serdeParams.separators.length; i++) {
+ for (int i = 0; i < serdeParams.separators.length; i++) {
serdeParams.needsEscape[serdeParams.separators[i]] = true;
}
}
-
+
return serdeParams;
}
// The object for storing row data
LazyStruct cachedLazyStruct;
-
+
// The wrapper for byte array
ByteArrayRef byteArrayRef;
-
+
/**
* Deserialize a row from the Writable to a LazyObject.
- * @param field the Writable that contains the data
- * @return The deserialized row Object.
+ *
+ * @param field
+ * the Writable that contains the data
+ * @return The deserialized row Object.
* @see SerDe#deserialize(Writable)
*/
public Object deserialize(Writable field) throws SerDeException {
@@ -309,22 +320,21 @@
byteArrayRef = new ByteArrayRef();
}
if (field instanceof BytesWritable) {
- BytesWritable b = (BytesWritable)field;
+ BytesWritable b = (BytesWritable) field;
// For backward-compatibility with hadoop 0.17
byteArrayRef.setData(b.get());
cachedLazyStruct.init(byteArrayRef, 0, b.getSize());
} else if (field instanceof Text) {
- Text t = (Text)field;
+ Text t = (Text) field;
byteArrayRef.setData(t.getBytes());
cachedLazyStruct.init(byteArrayRef, 0, t.getLength());
} else {
- throw new SerDeException(getClass().toString()
+ throw new SerDeException(getClass().toString()
+ ": expects either BytesWritable or Text object!");
}
return cachedLazyStruct;
}
-
-
+
/**
* Returns the ObjectInspector for the row.
*/
@@ -334,37 +344,42 @@
/**
* Returns the Writable Class after serialization.
+ *
* @see SerDe#getSerializedClass()
*/
public Class<? extends Writable> getSerializedClass() {
return Text.class;
}
-
+
Text serializeCache = new Text();
ByteStream.Output serializeStream = new ByteStream.Output();
+
/**
* Serialize a row of data.
- * @param obj The row object
- * @param objInspector The ObjectInspector for the row object
- * @return The serialized Writable object
- * @throws IOException
- * @see SerDe#serialize(Object, ObjectInspector)
+ *
+ * @param obj
+ * The row object
+ * @param objInspector
+ * The ObjectInspector for the row object
+ * @return The serialized Writable object
+ * @throws IOException
+ * @see SerDe#serialize(Object, ObjectInspector)
*/
- public Writable serialize(Object obj, ObjectInspector objInspector)
+ public Writable serialize(Object obj, ObjectInspector objInspector)
throws SerDeException {
if (objInspector.getCategory() != Category.STRUCT) {
- throw new SerDeException(getClass().toString()
- + " can only serialize struct types, but we got: "
+ throw new SerDeException(getClass().toString()
+ + " can only serialize struct types, but we got: "
+ objInspector.getTypeName());
}
// Prepare the field ObjectInspectors
- StructObjectInspector soi = (StructObjectInspector)objInspector;
+ StructObjectInspector soi = (StructObjectInspector) objInspector;
List<? extends StructField> fields = soi.getAllStructFieldRefs();
List<Object> list = soi.getStructFieldsDataAsList(obj);
- List<? extends StructField> declaredFields =(serdeParams.rowTypeInfo != null && ((StructTypeInfo) serdeParams.rowTypeInfo)
- .getAllStructFieldNames().size()>0)? ((StructObjectInspector)getObjectInspector())
+ List<? extends StructField> declaredFields = (serdeParams.rowTypeInfo != null && ((StructTypeInfo) serdeParams.rowTypeInfo)
+ .getAllStructFieldNames().size() > 0) ? ((StructObjectInspector) getObjectInspector())
.getAllStructFieldRefs()
: null;
@@ -372,9 +387,9 @@
try {
// Serialize each field
- for (int i=0; i<fields.size(); i++) {
+ for (int i = 0; i < fields.size(); i++) {
// Append the separator if needed.
- if (i>0) {
+ if (i > 0) {
serializeStream.write(serdeParams.separators[0]);
}
// Get the field objectInspector and the field object.
@@ -382,23 +397,22 @@
Object f = (list == null ? null : list.get(i));
if (declaredFields != null && i >= declaredFields.size()) {
- throw new SerDeException(
- "Error: expecting " + declaredFields.size()
+ throw new SerDeException("Error: expecting " + declaredFields.size()
+ " but asking for field " + i + "\n" + "data=" + obj + "\n"
+ "tableType=" + serdeParams.rowTypeInfo.toString() + "\n"
- + "dataType="
+ + "dataType="
+ TypeInfoUtils.getTypeInfoFromObjectInspector(objInspector));
}
-
- // If the field that is passed in is NOT a primitive, and either the
- // field is not declared (no schema was given at initialization), or
- // the field is declared as a primitive in initialization, serialize
- // the data to JSON string. Otherwise serialize the data in the
+
+ // If the field that is passed in is NOT a primitive, and either the
+ // field is not declared (no schema was given at initialization), or
+ // the field is declared as a primitive in initialization, serialize
+ // the data to JSON string. Otherwise serialize the data in the
// delimited way.
if (!foi.getCategory().equals(Category.PRIMITIVE)
- && (declaredFields == null ||
- declaredFields.get(i).getFieldObjectInspector().getCategory()
- .equals(Category.PRIMITIVE) || useJSONSerialize)) {
+ && (declaredFields == null
+ || declaredFields.get(i).getFieldObjectInspector()
+ .getCategory().equals(Category.PRIMITIVE) || useJSONSerialize)) {
serialize(serializeStream, SerDeUtils.getJSONString(f, foi),
PrimitiveObjectInspectorFactory.javaStringObjectInspector,
serdeParams.separators, 1, serdeParams.nullSequence,
@@ -406,8 +420,8 @@
serdeParams.needsEscape);
} else {
serialize(serializeStream, f, foi, serdeParams.separators, 1,
- serdeParams.nullSequence, serdeParams.escaped, serdeParams.escapeChar,
- serdeParams.needsEscape);
+ serdeParams.nullSequence, serdeParams.escaped,
+ serdeParams.escapeChar, serdeParams.needsEscape);
}
}
} catch (IOException e) {
@@ -415,105 +429,119 @@
}
// TODO: The copy of data is unnecessary, but there is no work-around
// since we cannot directly set the private byte[] field inside Text.
- serializeCache.set(serializeStream.getData(), 0,
- serializeStream.getCount());
+ serializeCache
+ .set(serializeStream.getData(), 0, serializeStream.getCount());
return serializeCache;
}
/**
* Serialize the row into the StringBuilder.
- * @param out The StringBuilder to store the serialized data.
- * @param obj The object for the current field.
- * @param objInspector The ObjectInspector for the current Object.
- * @param separators The separators array.
- * @param level The current level of separator.
- * @param nullSequence The byte sequence representing the NULL value.
- * @param escaped Whether we need to escape the data when writing out
- * @param escapeChar Which char to use as the escape char, e.g. '\\'
- * @param needsEscape Which chars needs to be escaped. This array should have size of 128.
- * Negative byte values (or byte values >= 128) are never escaped.
- * @throws IOException
+ *
+ * @param out
+ * The StringBuilder to store the serialized data.
+ * @param obj
+ * The object for the current field.
+ * @param objInspector
+ * The ObjectInspector for the current Object.
+ * @param separators
+ * The separators array.
+ * @param level
+ * The current level of separator.
+ * @param nullSequence
+ * The byte sequence representing the NULL value.
+ * @param escaped
+ * Whether we need to escape the data when writing out
+ * @param escapeChar
+ * Which char to use as the escape char, e.g. '\\'
+ * @param needsEscape
+ * Which chars needs to be escaped. This array should have size of
+ * 128. Negative byte values (or byte values >= 128) are never
+ * escaped.
+ * @throws IOException
*/
- public static void serialize(ByteStream.Output out, Object obj,
+ public static void serialize(ByteStream.Output out, Object obj,
ObjectInspector objInspector, byte[] separators, int level,
- Text nullSequence, boolean escaped, byte escapeChar, boolean[] needsEscape) throws IOException {
-
+ Text nullSequence, boolean escaped, byte escapeChar, boolean[] needsEscape)
+ throws IOException {
+
if (obj == null) {
out.write(nullSequence.getBytes(), 0, nullSequence.getLength());
return;
}
-
+
switch (objInspector.getCategory()) {
- case PRIMITIVE: {
- LazyUtils.writePrimitiveUTF8(out, obj, (PrimitiveObjectInspector)objInspector, escaped, escapeChar, needsEscape);
- return;
- }
- case LIST: {
- char separator = (char)separators[level];
- ListObjectInspector loi = (ListObjectInspector)objInspector;
- List<?> list = loi.getList(obj);
- ObjectInspector eoi = loi.getListElementObjectInspector();
- if (list == null) {
- out.write(nullSequence.getBytes(), 0, nullSequence.getLength());
- } else {
- for (int i=0; i<list.size(); i++) {
- if (i>0) {
- out.write(separator);
- }
- serialize(out, list.get(i), eoi, separators, level+1,
- nullSequence, escaped, escapeChar, needsEscape);
+ case PRIMITIVE: {
+ LazyUtils.writePrimitiveUTF8(out, obj,
+ (PrimitiveObjectInspector) objInspector, escaped, escapeChar,
+ needsEscape);
+ return;
+ }
+ case LIST: {
+ char separator = (char) separators[level];
+ ListObjectInspector loi = (ListObjectInspector) objInspector;
+ List<?> list = loi.getList(obj);
+ ObjectInspector eoi = loi.getListElementObjectInspector();
+ if (list == null) {
+ out.write(nullSequence.getBytes(), 0, nullSequence.getLength());
+ } else {
+ for (int i = 0; i < list.size(); i++) {
+ if (i > 0) {
+ out.write(separator);
}
+ serialize(out, list.get(i), eoi, separators, level + 1, nullSequence,
+ escaped, escapeChar, needsEscape);
}
- return;
}
- case MAP: {
- char separator = (char)separators[level];
- char keyValueSeparator = (char)separators[level+1];
- MapObjectInspector moi = (MapObjectInspector)objInspector;
- ObjectInspector koi = moi.getMapKeyObjectInspector();
- ObjectInspector voi = moi.getMapValueObjectInspector();
-
- Map<?, ?> map = moi.getMap(obj);
- if (map == null) {
- out.write(nullSequence.getBytes(), 0, nullSequence.getLength());
- } else {
- boolean first = true;
- for (Map.Entry<?, ?> entry: map.entrySet()) {
- if (first) {
- first = false;
- } else {
- out.write(separator);
- }
- serialize(out, entry.getKey(), koi, separators, level+2,
- nullSequence, escaped, escapeChar, needsEscape);
- out.write(keyValueSeparator);
- serialize(out, entry.getValue(), voi, separators, level+2,
- nullSequence, escaped, escapeChar, needsEscape);
+ return;
+ }
+ case MAP: {
+ char separator = (char) separators[level];
+ char keyValueSeparator = (char) separators[level + 1];
+ MapObjectInspector moi = (MapObjectInspector) objInspector;
+ ObjectInspector koi = moi.getMapKeyObjectInspector();
+ ObjectInspector voi = moi.getMapValueObjectInspector();
+
+ Map<?, ?> map = moi.getMap(obj);
+ if (map == null) {
+ out.write(nullSequence.getBytes(), 0, nullSequence.getLength());
+ } else {
+ boolean first = true;
+ for (Map.Entry<?, ?> entry : map.entrySet()) {
+ if (first) {
+ first = false;
+ } else {
+ out.write(separator);
}
+ serialize(out, entry.getKey(), koi, separators, level + 2,
+ nullSequence, escaped, escapeChar, needsEscape);
+ out.write(keyValueSeparator);
+ serialize(out, entry.getValue(), voi, separators, level + 2,
+ nullSequence, escaped, escapeChar, needsEscape);
}
- return;
}
- case STRUCT: {
- char separator = (char)separators[level];
- StructObjectInspector soi = (StructObjectInspector)objInspector;
- List<? extends StructField> fields = soi.getAllStructFieldRefs();
- List<Object> list = soi.getStructFieldsDataAsList(obj);
- if (list == null) {
- out.write(nullSequence.getBytes(), 0, nullSequence.getLength());
- } else {
- for (int i=0; i<list.size(); i++) {
- if (i>0) {
- out.write(separator);
- }
- serialize(out, list.get(i),
- fields.get(i).getFieldObjectInspector(), separators, level+1,
- nullSequence, escaped, escapeChar, needsEscape);
+ return;
+ }
+ case STRUCT: {
+ char separator = (char) separators[level];
+ StructObjectInspector soi = (StructObjectInspector) objInspector;
+ List<? extends StructField> fields = soi.getAllStructFieldRefs();
+ List<Object> list = soi.getStructFieldsDataAsList(obj);
+ if (list == null) {
+ out.write(nullSequence.getBytes(), 0, nullSequence.getLength());
+ } else {
+ for (int i = 0; i < list.size(); i++) {
+ if (i > 0) {
+ out.write(separator);
}
+ serialize(out, list.get(i), fields.get(i).getFieldObjectInspector(),
+ separators, level + 1, nullSequence, escaped, escapeChar,
+ needsEscape);
}
- return;
}
+ return;
}
-
+ }
+
throw new RuntimeException("Unknown category type: "
+ objInspector.getCategory());
}
@@ -526,7 +554,8 @@
}
/**
- * @param useJSONSerialize the useJSONSerialize to set
+ * @param useJSONSerialize
+ * the useJSONSerialize to set
*/
public void setUseJSONSerialize(boolean useJSONSerialize) {
this.useJSONSerialize = useJSONSerialize;
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyString.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyString.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyString.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyString.java Thu Jan 21 08:59:22 2010
@@ -34,24 +34,24 @@
super(copy);
data = new Text(copy.data);
}
-
+
@Override
public void init(ByteArrayRef bytes, int start, int length) {
if (oi.isEscaped()) {
byte escapeChar = oi.getEscapeChar();
byte[] inputBytes = bytes.getData();
-
+
// First calculate the length of the output string
int outputLength = 0;
- for (int i=0; i<length; i++) {
- if (inputBytes[start+i] != escapeChar) {
- outputLength ++;
+ for (int i = 0; i < length; i++) {
+ if (inputBytes[start + i] != escapeChar) {
+ outputLength++;
} else {
- outputLength ++;
+ outputLength++;
i++;
}
}
-
+
// Copy the data over, so that the internal state of Text will be set to
// the required outputLength.
data.set(bytes.getData(), start, outputLength);
@@ -62,17 +62,17 @@
if (outputLength < length) {
int k = 0;
byte[] outputBytes = data.getBytes();
- for (int i=0; i<length; i++) {
- byte b = inputBytes[start+i];
+ for (int i = 0; i < length; i++) {
+ byte b = inputBytes[start + i];
if (b != escapeChar || i == length - 1) {
outputBytes[k++] = b;
} else {
// get the next byte
i++;
- outputBytes[k++] = inputBytes[start+i];
+ outputBytes[k++] = inputBytes[start + i];
}
}
- assert(k == outputLength);
+ assert (k == outputLength);
}
} else {
// if the data is not escaped, simply copy the data.
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyStruct.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyStruct.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyStruct.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyStruct.java Thu Jan 21 08:59:22 2010
@@ -28,15 +28,15 @@
import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
import org.apache.hadoop.io.Text;
-
/**
- * LazyObject for storing a struct.
- * The field of a struct can be primitive or non-primitive.
- *
- * LazyStruct does not deal with the case of a NULL struct. That is handled
- * by the parent LazyObject.
+ * LazyObject for storing a struct. The field of a struct can be primitive or
+ * non-primitive.
+ *
+ * LazyStruct does not deal with the case of a NULL struct. That is handled by
+ * the parent LazyObject.
*/
-public class LazyStruct extends LazyNonPrimitive<LazySimpleStructObjectInspector> {
+public class LazyStruct extends
+ LazyNonPrimitive<LazySimpleStructObjectInspector> {
private static Log LOG = LogFactory.getLog(LazyStruct.class.getName());
@@ -46,14 +46,13 @@
boolean parsed;
/**
- * The start positions of struct fields.
- * Only valid when the data is parsed.
- * Note that startPosition[arrayLength] = begin + length + 1;
- * that makes sure we can use the same formula to compute the
- * length of each element of the array.
+ * The start positions of struct fields. Only valid when the data is parsed.
+ * Note that startPosition[arrayLength] = begin + length + 1; that makes sure
+ * we can use the same formula to compute the length of each element of the
+ * array.
*/
int[] startPosition;
-
+
/**
* The fields of the struct.
*/
@@ -62,18 +61,20 @@
* Whether init() has been called on the field or not.
*/
boolean[] fieldInited;
-
+
/**
* Construct a LazyStruct object with the ObjectInspector.
*/
public LazyStruct(LazySimpleStructObjectInspector oi) {
super(oi);
}
-
+
/**
* Set the row data for this LazyStruct.
+ *
* @see LazyObject#init(ByteArrayRef, int, int)
*/
+ @Override
public void init(ByteArrayRef bytes, int start, int length) {
super.init(bytes, start, length);
parsed = false;
@@ -81,34 +82,37 @@
boolean missingFieldWarned = false;
boolean extraFieldWarned = false;
+
/**
* Parse the byte[] and fill each field.
*/
private void parse() {
-
+
byte separator = oi.getSeparator();
boolean lastColumnTakesRest = oi.getLastColumnTakesRest();
boolean isEscaped = oi.isEscaped();
byte escapeChar = oi.getEscapeChar();
-
+
if (fields == null) {
- List<? extends StructField> fieldRefs = ((StructObjectInspector)oi).getAllStructFieldRefs();
+ List<? extends StructField> fieldRefs = ((StructObjectInspector) oi)
+ .getAllStructFieldRefs();
fields = new LazyObject[fieldRefs.size()];
- for (int i = 0 ; i < fields.length; i++) {
- fields[i] = LazyFactory.createLazyObject(fieldRefs.get(i).getFieldObjectInspector());
+ for (int i = 0; i < fields.length; i++) {
+ fields[i] = LazyFactory.createLazyObject(fieldRefs.get(i)
+ .getFieldObjectInspector());
}
- fieldInited = new boolean[fields.length];
- // Extra element to make sure we have the same formula to compute the
- // length of each element of the array.
- startPosition = new int[fields.length+1];
+ fieldInited = new boolean[fields.length];
+ // Extra element to make sure we have the same formula to compute the
+ // length of each element of the array.
+ startPosition = new int[fields.length + 1];
}
-
+
int structByteEnd = start + length;
int fieldId = 0;
int fieldByteBegin = start;
int fieldByteEnd = start;
byte[] bytes = this.bytes.getData();
-
+
// Go through all bytes in the byte[]
while (fieldByteEnd <= structByteEnd) {
if (fieldByteEnd == structByteEnd || bytes[fieldByteEnd] == separator) {
@@ -117,7 +121,7 @@
fieldByteEnd = structByteEnd;
}
startPosition[fieldId] = fieldByteBegin;
- fieldId ++;
+ fieldId++;
if (fieldId == fields.length || fieldByteEnd == structByteEnd) {
// All fields have been parsed, or bytes have been parsed.
// We need to set the startPosition of fields.length to ensure we
@@ -127,14 +131,14 @@
// return these fields as NULLs.
for (int i = fieldId; i <= fields.length; i++) {
startPosition[i] = fieldByteEnd + 1;
- }
+ }
break;
}
fieldByteBegin = fieldByteEnd + 1;
- fieldByteEnd ++;
+ fieldByteEnd++;
} else {
if (isEscaped && bytes[fieldByteEnd] == escapeChar
- && fieldByteEnd+1 < structByteEnd) {
+ && fieldByteEnd + 1 < structByteEnd) {
// ignore the char after escape_char
fieldByteEnd += 2;
} else {
@@ -142,36 +146,37 @@
}
}
}
-
+
// Extra bytes at the end?
if (!extraFieldWarned && fieldByteEnd < structByteEnd) {
extraFieldWarned = true;
LOG.warn("Extra bytes detected at the end of the row! Ignoring similar "
+ "problems.");
}
-
+
// Missing fields?
if (!missingFieldWarned && fieldId < fields.length) {
missingFieldWarned = true;
LOG.warn("Missing fields! Expected " + fields.length + " fields but "
+ "only got " + fieldId + "! Ignoring similar problems.");
}
-
+
Arrays.fill(fieldInited, false);
- parsed = true;
+ parsed = true;
}
-
+
/**
* Get one field out of the struct.
*
- * If the field is a primitive field, return the actual object.
- * Otherwise return the LazyObject. This is because PrimitiveObjectInspector
- * does not have control over the object used by the user - the user simply
- * directly use the Object instead of going through
- * Object PrimitiveObjectInspector.get(Object).
+ * If the field is a primitive field, return the actual object. Otherwise
+ * return the LazyObject. This is because PrimitiveObjectInspector does not
+ * have control over the object used by the user - the user simply directly
+ * use the Object instead of going through Object
+ * PrimitiveObjectInspector.get(Object).
*
- * @param fieldID The field ID
- * @return The field as a LazyObject
+ * @param fieldID
+ * The field ID
+ * @return The field as a LazyObject
*/
public Object getField(int fieldID) {
if (!parsed) {
@@ -179,24 +184,27 @@
}
return uncheckedGetField(fieldID);
}
-
+
/**
- * Get the field out of the row without checking parsed.
- * This is called by both getField and getFieldsAsList.
- * @param fieldID The id of the field starting from 0.
- * @param nullSequence The sequence representing NULL value.
- * @return The value of the field
+ * Get the field out of the row without checking parsed. This is called by
+ * both getField and getFieldsAsList.
+ *
+ * @param fieldID
+ * The id of the field starting from 0.
+ * @param nullSequence
+ * The sequence representing NULL value.
+ * @return The value of the field
*/
private Object uncheckedGetField(int fieldID) {
Text nullSequence = oi.getNullSequence();
- // Test the length first so in most cases we avoid doing a byte[]
+ // Test the length first so in most cases we avoid doing a byte[]
// comparison.
int fieldByteBegin = startPosition[fieldID];
- int fieldLength = startPosition[fieldID+1] - startPosition[fieldID] - 1;
+ int fieldLength = startPosition[fieldID + 1] - startPosition[fieldID] - 1;
if ((fieldLength < 0)
- || (fieldLength == nullSequence.getLength()
- && LazyUtils.compare(bytes.getData(), fieldByteBegin, fieldLength,
- nullSequence.getBytes(), 0, nullSequence.getLength()) == 0)) {
+ || (fieldLength == nullSequence.getLength() && LazyUtils.compare(bytes
+ .getData(), fieldByteBegin, fieldLength, nullSequence.getBytes(),
+ 0, nullSequence.getLength()) == 0)) {
return null;
}
if (!fieldInited[fieldID]) {
@@ -207,8 +215,10 @@
}
ArrayList<Object> cachedList;
+
/**
* Get the values of the fields as an ArrayList.
+ *
* @return The values of the fields as an ArrayList.
*/
public ArrayList<Object> getFieldsAsList() {
@@ -220,12 +230,12 @@
} else {
cachedList.clear();
}
- for (int i=0; i<fields.length; i++) {
+ for (int i = 0; i < fields.length; i++) {
cachedList.add(uncheckedGetField(i));
}
return cachedList;
}
-
+
@Override
public Object getObject() {
return this;
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java Thu Jan 21 08:59:22 2010
@@ -37,32 +37,38 @@
/**
* Returns the digit represented by character b.
- * @param b The ascii code of the character
- * @param radix The radix
- * @return -1 if it's invalid
+ *
+ * @param b
+ * The ascii code of the character
+ * @param radix
+ * The radix
+ * @return -1 if it's invalid
*/
public static int digit(int b, int radix) {
int r = -1;
- if (b >= '0' && b<='9') {
+ if (b >= '0' && b <= '9') {
r = b - '0';
- } else if (b >= 'A' && b<='Z') {
+ } else if (b >= 'A' && b <= 'Z') {
r = b - 'A' + 10;
} else if (b >= 'a' && b <= 'z') {
r = b - 'a' + 10;
}
- if (r >= radix) r = -1;
+ if (r >= radix) {
+ r = -1;
+ }
return r;
}
-
+
/**
- * Returns -1 if the first byte sequence is lexicographically less than the second;
- * returns +1 if the second byte sequence is lexicographically less than the first;
- * otherwise return 0.
+ * Returns -1 if the first byte sequence is lexicographically less than the
+ * second; returns +1 if the second byte sequence is lexicographically less
+ * than the first; otherwise return 0.
*/
- public static int compare(byte[] b1, int start1, int length1, byte[] b2, int start2, int length2) {
-
+ public static int compare(byte[] b1, int start1, int length1, byte[] b2,
+ int start2, int length2) {
+
int min = Math.min(length1, length2);
-
+
for (int i = 0; i < min; i++) {
if (b1[start1 + i] == b2[start2 + i]) {
continue;
@@ -71,19 +77,27 @@
return -1;
} else {
return 1;
- }
+ }
+ }
+
+ if (length1 < length2) {
+ return -1;
+ }
+ if (length1 > length2) {
+ return 1;
}
-
- if (length1 < length2) return -1;
- if (length1 > length2) return 1;
return 0;
}
-
+
/**
* Convert a UTF-8 byte array to String.
- * @param bytes The byte[] containing the UTF-8 String.
- * @param start The start position inside the bytes.
- * @param length The length of the data, starting from "start"
+ *
+ * @param bytes
+ * The byte[] containing the UTF-8 String.
+ * @param start
+ * The start position inside the bytes.
+ * @param length
+ * The length of the data, starting from "start"
* @return The unicode String
*/
public static String convertToString(byte[] bytes, int start, int length) {
@@ -94,19 +108,22 @@
}
}
-
- static byte[] trueBytes = {(byte)'t', 'r', 'u', 'e'};
- static byte[] falseBytes = {(byte)'f', 'a', 'l', 's', 'e'};
+ static byte[] trueBytes = { (byte) 't', 'r', 'u', 'e' };
+ static byte[] falseBytes = { (byte) 'f', 'a', 'l', 's', 'e' };
/**
* Write the bytes with special characters escaped.
- * @param escaped Whether the data should be written out in an escaped way.
- * @param escapeChar if escaped, the char for prefixing special characters.
- * @param needsEscape if escaped, whether a specific character needs escaping.
- * This array should have size of 128.
+ *
+ * @param escaped
+ * Whether the data should be written out in an escaped way.
+ * @param escapeChar
+ * if escaped, the char for prefixing special characters.
+ * @param needsEscape
+ * if escaped, whether a specific character needs escaping. This
+ * array should have size of 128.
*/
- private static void writeEscaped(OutputStream out, byte[] bytes,
- int start, int len, boolean escaped, byte escapeChar, boolean[] needsEscape)
+ private static void writeEscaped(OutputStream out, byte[] bytes, int start,
+ int len, boolean escaped, byte escapeChar, boolean[] needsEscape)
throws IOException {
if (escaped) {
int end = start + len;
@@ -126,71 +143,79 @@
out.write(bytes, 0, len);
}
}
-
-
+
/**
- * Write out the text representation of a Primitive Object to a UTF8 byte stream.
- * @param out The UTF8 byte OutputStream
- * @param o The primitive Object
- * @param needsEscape Whether a character needs escaping. This array should have size of 128.
+ * Write out the text representation of a Primitive Object to a UTF8 byte
+ * stream.
+ *
+ * @param out
+ * The UTF8 byte OutputStream
+ * @param o
+ * The primitive Object
+ * @param needsEscape
+ * Whether a character needs escaping. This array should have size of
+ * 128.
*/
- public static void writePrimitiveUTF8(OutputStream out, Object o, PrimitiveObjectInspector oi,
- boolean escaped, byte escapeChar, boolean[] needsEscape) throws IOException {
-
+ public static void writePrimitiveUTF8(OutputStream out, Object o,
+ PrimitiveObjectInspector oi, boolean escaped, byte escapeChar,
+ boolean[] needsEscape) throws IOException {
+
switch (oi.getPrimitiveCategory()) {
- case BOOLEAN: {
- boolean b = ((BooleanObjectInspector)oi).get(o);
- if (b) {
- out.write(trueBytes, 0, trueBytes.length);
- } else {
- out.write(falseBytes, 0, falseBytes.length);
- }
- break;
- }
- case BYTE: {
- LazyInteger.writeUTF8(out, ((ByteObjectInspector)oi).get(o));
- break;
- }
- case SHORT: {
- LazyInteger.writeUTF8(out, ((ShortObjectInspector)oi).get(o));
- break;
- }
- case INT: {
- LazyInteger.writeUTF8(out, ((IntObjectInspector)oi).get(o));
- break;
- }
- case LONG: {
- LazyLong.writeUTF8(out, ((LongObjectInspector)oi).get(o));
- break;
- }
- case FLOAT: {
- float f = ((FloatObjectInspector)oi).get(o);
- ByteBuffer b = Text.encode(String.valueOf(f));
- out.write(b.array(), 0, b.limit());
- break;
- }
- case DOUBLE: {
- double d = ((DoubleObjectInspector)oi).get(o);
- ByteBuffer b = Text.encode(String.valueOf(d));
- out.write(b.array(), 0, b.limit());
- break;
- }
- case STRING: {
- Text t = ((StringObjectInspector)oi).getPrimitiveWritableObject(o);
- writeEscaped(out, t.getBytes(), 0, t.getLength(), escaped, escapeChar, needsEscape);
- break;
- }
- default: {
- throw new RuntimeException("Hive internal error.");
+ case BOOLEAN: {
+ boolean b = ((BooleanObjectInspector) oi).get(o);
+ if (b) {
+ out.write(trueBytes, 0, trueBytes.length);
+ } else {
+ out.write(falseBytes, 0, falseBytes.length);
}
+ break;
+ }
+ case BYTE: {
+ LazyInteger.writeUTF8(out, ((ByteObjectInspector) oi).get(o));
+ break;
+ }
+ case SHORT: {
+ LazyInteger.writeUTF8(out, ((ShortObjectInspector) oi).get(o));
+ break;
+ }
+ case INT: {
+ LazyInteger.writeUTF8(out, ((IntObjectInspector) oi).get(o));
+ break;
+ }
+ case LONG: {
+ LazyLong.writeUTF8(out, ((LongObjectInspector) oi).get(o));
+ break;
+ }
+ case FLOAT: {
+ float f = ((FloatObjectInspector) oi).get(o);
+ ByteBuffer b = Text.encode(String.valueOf(f));
+ out.write(b.array(), 0, b.limit());
+ break;
+ }
+ case DOUBLE: {
+ double d = ((DoubleObjectInspector) oi).get(o);
+ ByteBuffer b = Text.encode(String.valueOf(d));
+ out.write(b.array(), 0, b.limit());
+ break;
+ }
+ case STRING: {
+ Text t = ((StringObjectInspector) oi).getPrimitiveWritableObject(o);
+ writeEscaped(out, t.getBytes(), 0, t.getLength(), escaped, escapeChar,
+ needsEscape);
+ break;
+ }
+ default: {
+ throw new RuntimeException("Hive internal error.");
+ }
}
}
-
+
public static int hashBytes(byte[] data, int start, int len) {
int hash = 1;
- for (int i = start; i < len; i++)
- hash = (31 * hash) + (int)data[i];
+ for (int i = start; i < len; i++) {
+ hash = (31 * hash) + data[i];
+ }
return hash;
}
-
+
}
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyListObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyListObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyListObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyListObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -30,23 +30,25 @@
/**
* LazyListObjectInspector works on array data that is stored in LazyArray.
*
- * Always use the ObjectInspectorFactory to create new ObjectInspector objects, instead
- * of directly creating an instance of this class.
+ * Always use the ObjectInspectorFactory to create new ObjectInspector objects,
+ * instead of directly creating an instance of this class.
*/
public class LazyListObjectInspector implements ListObjectInspector {
- public static final Log LOG = LogFactory.getLog(LazyListObjectInspector.class.getName());
-
+ public static final Log LOG = LogFactory.getLog(LazyListObjectInspector.class
+ .getName());
+
ObjectInspector listElementObjectInspector;
-
+
byte separator;
Text nullSequence;
boolean escaped;
byte escapeChar;
-
- /** Call ObjectInspectorFactory.getLazySimpleListObjectInspector instead.
+
+ /**
+ * Call ObjectInspectorFactory.getLazySimpleListObjectInspector instead.
*/
- protected LazyListObjectInspector(ObjectInspector listElementObjectInspector,
+ protected LazyListObjectInspector(ObjectInspector listElementObjectInspector,
byte separator, Text nullSequence, boolean escaped, byte escapeChar) {
this.listElementObjectInspector = listElementObjectInspector;
this.separator = separator;
@@ -65,7 +67,7 @@
public ObjectInspector getListElementObjectInspector() {
return listElementObjectInspector;
}
-
+
// with data
@Override
public Object getListElement(Object data, int index) {
@@ -75,7 +77,7 @@
LazyArray array = (LazyArray) data;
return array.getListElementObject(index);
}
-
+
@Override
public int getListLength(Object data) {
if (data == null) {
@@ -84,7 +86,7 @@
LazyArray array = (LazyArray) data;
return array.getListLength();
}
-
+
@Override
public List<?> getList(Object data) {
if (data == null) {
@@ -96,28 +98,29 @@
@Override
public String getTypeName() {
- return org.apache.hadoop.hive.serde.Constants.LIST_TYPE_NAME
- + "<" + listElementObjectInspector.getTypeName() + ">";
+ return org.apache.hadoop.hive.serde.Constants.LIST_TYPE_NAME + "<"
+ + listElementObjectInspector.getTypeName() + ">";
}
/**
- * Returns the separator for delimiting items in this array.
- * Called by LazyArray.init(...).
+ * Returns the separator for delimiting items in this array. Called by
+ * LazyArray.init(...).
*/
public byte getSeparator() {
return separator;
}
/**
- * Returns the NullSequence for this array.
- * Called by LazyArray.init(...).
+ * Returns the NullSequence for this array. Called by LazyArray.init(...).
*/
public Text getNullSequence() {
return nullSequence;
}
+
public boolean isEscaped() {
return escaped;
}
+
public byte getEscapeChar() {
return escapeChar;
}
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyMapObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyMapObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyMapObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyMapObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -30,28 +30,30 @@
/**
* LazyMapObjectInspector works on struct data that is stored in LazyStruct.
*
- * Always use the ObjectInspectorFactory to create new ObjectInspector objects, instead
- * of directly creating an instance of this class.
+ * Always use the ObjectInspectorFactory to create new ObjectInspector objects,
+ * instead of directly creating an instance of this class.
*/
public class LazyMapObjectInspector implements MapObjectInspector {
- public static final Log LOG = LogFactory.getLog(LazyMapObjectInspector.class.getName());
-
+ public static final Log LOG = LogFactory.getLog(LazyMapObjectInspector.class
+ .getName());
+
ObjectInspector mapKeyObjectInspector;
ObjectInspector mapValueObjectInspector;
-
+
byte itemSeparator;
- byte keyValueSeparator;
+ byte keyValueSeparator;
Text nullSequence;
boolean escaped;
byte escapeChar;
-
- /** Call ObjectInspectorFactory.getStandardListObjectInspector instead.
+
+ /**
+ * Call ObjectInspectorFactory.getStandardListObjectInspector instead.
*/
protected LazyMapObjectInspector(ObjectInspector mapKeyObjectInspector,
- ObjectInspector mapValueObjectInspector,
- byte itemSeparator, byte keyValueSeparator, Text nullSequence,
- boolean escaped, byte escapeChar) {
+ ObjectInspector mapValueObjectInspector, byte itemSeparator,
+ byte keyValueSeparator, Text nullSequence, boolean escaped,
+ byte escapeChar) {
this.mapKeyObjectInspector = mapKeyObjectInspector;
this.mapValueObjectInspector = mapValueObjectInspector;
@@ -69,8 +71,8 @@
@Override
public String getTypeName() {
- return org.apache.hadoop.hive.serde.Constants.MAP_TYPE_NAME
- + "<" + mapKeyObjectInspector.getTypeName() + ","
+ return org.apache.hadoop.hive.serde.Constants.MAP_TYPE_NAME + "<"
+ + mapKeyObjectInspector.getTypeName() + ","
+ mapValueObjectInspector.getTypeName() + ">";
}
@@ -89,7 +91,7 @@
if (data == null) {
return null;
}
- return ((LazyMap)data).getMapValueElement(key);
+ return ((LazyMap) data).getMapValueElement(key);
}
@Override
@@ -97,7 +99,7 @@
if (data == null) {
return null;
}
- return ((LazyMap)data).getMap();
+ return ((LazyMap) data).getMap();
}
@Override
@@ -105,22 +107,26 @@
if (data == null) {
return -1;
}
- return ((LazyMap)data).getMapSize();
+ return ((LazyMap) data).getMapSize();
}
-
+
// Called by LazyMap
public byte getItemSeparator() {
return itemSeparator;
}
+
public byte getKeyValueSeparator() {
return keyValueSeparator;
}
+
public Text getNullSequence() {
return nullSequence;
}
+
public boolean isEscaped() {
return escaped;
}
+
public byte getEscapeChar() {
return escapeChar;
}
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyObjectInspectorFactory.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyObjectInspectorFactory.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyObjectInspectorFactory.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyObjectInspectorFactory.java Thu Jan 21 08:59:22 2010
@@ -21,37 +21,30 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableBooleanObjectInspector;
import org.apache.hadoop.io.Text;
-
/**
- * ObjectInspectorFactory is the primary way to create new ObjectInspector instances.
+ * ObjectInspectorFactory is the primary way to create new ObjectInspector
+ * instances.
*
- * SerDe classes should call the static functions in this library to create an ObjectInspector
- * to return to the caller of SerDe2.getObjectInspector().
+ * SerDe classes should call the static functions in this library to create an
+ * ObjectInspector to return to the caller of SerDe2.getObjectInspector().
*
- * The reason of having caches here is that ObjectInspectors do not have an internal
- * state - so ObjectInspectors with the same construction parameters should
- * result in exactly the same ObjectInspector.
+ * The reason of having caches here is that ObjectInspectors do not have an
+ * internal state - so ObjectInspectors with the same construction parameters
+ * should result in exactly the same ObjectInspector.
*/
public class LazyObjectInspectorFactory {
+ static HashMap<ArrayList<Object>, LazySimpleStructObjectInspector> cachedLazySimpleStructObjectInspector = new HashMap<ArrayList<Object>, LazySimpleStructObjectInspector>();
-
- static HashMap<ArrayList<Object>, LazySimpleStructObjectInspector> cachedLazySimpleStructObjectInspector =
- new HashMap<ArrayList<Object>, LazySimpleStructObjectInspector>();
- public static LazySimpleStructObjectInspector getLazySimpleStructObjectInspector(List<String> structFieldNames,
- List<ObjectInspector> structFieldObjectInspectors, byte separator, Text nullSequence,
- boolean lastColumnTakesRest, boolean escaped, byte escapeChar) {
+ public static LazySimpleStructObjectInspector getLazySimpleStructObjectInspector(
+ List<String> structFieldNames,
+ List<ObjectInspector> structFieldObjectInspectors, byte separator,
+ Text nullSequence, boolean lastColumnTakesRest, boolean escaped,
+ byte escapeChar) {
ArrayList<Object> signature = new ArrayList<Object>();
signature.add(structFieldNames);
signature.add(structFieldObjectInspectors);
@@ -60,40 +53,44 @@
signature.add(Boolean.valueOf(lastColumnTakesRest));
signature.add(Boolean.valueOf(escaped));
signature.add(Byte.valueOf(escapeChar));
- LazySimpleStructObjectInspector result = cachedLazySimpleStructObjectInspector.get(signature);
+ LazySimpleStructObjectInspector result = cachedLazySimpleStructObjectInspector
+ .get(signature);
if (result == null) {
- result = new LazySimpleStructObjectInspector(structFieldNames, structFieldObjectInspectors,
- separator, nullSequence, lastColumnTakesRest, escaped, escapeChar);
+ result = new LazySimpleStructObjectInspector(structFieldNames,
+ structFieldObjectInspectors, separator, nullSequence,
+ lastColumnTakesRest, escaped, escapeChar);
cachedLazySimpleStructObjectInspector.put(signature, result);
}
return result;
}
- static HashMap<ArrayList<Object>, LazyListObjectInspector> cachedLazySimpleListObjectInspector =
- new HashMap<ArrayList<Object>, LazyListObjectInspector>();
- public static LazyListObjectInspector getLazySimpleListObjectInspector(
- ObjectInspector listElementObjectInspector, byte separator, Text nullSequence,
- boolean escaped, byte escapeChar) {
+ static HashMap<ArrayList<Object>, LazyListObjectInspector> cachedLazySimpleListObjectInspector = new HashMap<ArrayList<Object>, LazyListObjectInspector>();
+
+ public static LazyListObjectInspector getLazySimpleListObjectInspector(
+ ObjectInspector listElementObjectInspector, byte separator,
+ Text nullSequence, boolean escaped, byte escapeChar) {
ArrayList<Object> signature = new ArrayList<Object>();
signature.add(listElementObjectInspector);
signature.add(Byte.valueOf(separator));
signature.add(nullSequence.toString());
signature.add(Boolean.valueOf(escaped));
signature.add(Byte.valueOf(escapeChar));
- LazyListObjectInspector result = cachedLazySimpleListObjectInspector.get(signature);
+ LazyListObjectInspector result = cachedLazySimpleListObjectInspector
+ .get(signature);
if (result == null) {
- result = new LazyListObjectInspector(listElementObjectInspector,
+ result = new LazyListObjectInspector(listElementObjectInspector,
separator, nullSequence, escaped, escapeChar);
cachedLazySimpleListObjectInspector.put(signature, result);
}
return result;
}
-
- static HashMap<ArrayList<Object>, LazyMapObjectInspector> cachedLazySimpleMapObjectInspector =
- new HashMap<ArrayList<Object>, LazyMapObjectInspector>();
- public static LazyMapObjectInspector getLazySimpleMapObjectInspector(
- ObjectInspector mapKeyObjectInspector, ObjectInspector mapValueObjectInspector,
- byte itemSeparator, byte keyValueSeparator, Text nullSequence, boolean escaped,
+
+ static HashMap<ArrayList<Object>, LazyMapObjectInspector> cachedLazySimpleMapObjectInspector = new HashMap<ArrayList<Object>, LazyMapObjectInspector>();
+
+ public static LazyMapObjectInspector getLazySimpleMapObjectInspector(
+ ObjectInspector mapKeyObjectInspector,
+ ObjectInspector mapValueObjectInspector, byte itemSeparator,
+ byte keyValueSeparator, Text nullSequence, boolean escaped,
byte escapeChar) {
ArrayList<Object> signature = new ArrayList<Object>();
signature.add(mapKeyObjectInspector);
@@ -103,14 +100,15 @@
signature.add(nullSequence.toString());
signature.add(Boolean.valueOf(escaped));
signature.add(Byte.valueOf(escapeChar));
- LazyMapObjectInspector result = cachedLazySimpleMapObjectInspector.get(signature);
+ LazyMapObjectInspector result = cachedLazySimpleMapObjectInspector
+ .get(signature);
if (result == null) {
result = new LazyMapObjectInspector(mapKeyObjectInspector,
- mapValueObjectInspector, itemSeparator, keyValueSeparator, nullSequence,
- escaped, escapeChar);
+ mapValueObjectInspector, itemSeparator, keyValueSeparator,
+ nullSequence, escaped, escapeChar);
cachedLazySimpleMapObjectInspector.put(signature, result);
}
return result;
}
-
+
}
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazySimpleStructObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazySimpleStructObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazySimpleStructObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazySimpleStructObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -31,24 +31,27 @@
import org.apache.hadoop.io.Text;
/**
- * LazySimpleStructObjectInspector works on struct data that is stored in LazyStruct.
+ * LazySimpleStructObjectInspector works on struct data that is stored in
+ * LazyStruct.
*
- * The names of the struct fields and the internal structure of the struct fields
- * are specified in the ctor of the LazySimpleStructObjectInspector.
+ * The names of the struct fields and the internal structure of the struct
+ * fields are specified in the ctor of the LazySimpleStructObjectInspector.
*
- * Always use the ObjectInspectorFactory to create new ObjectInspector objects, instead
- * of directly creating an instance of this class.
+ * Always use the ObjectInspectorFactory to create new ObjectInspector objects,
+ * instead of directly creating an instance of this class.
*/
public class LazySimpleStructObjectInspector extends StructObjectInspector {
- public static final Log LOG = LogFactory.getLog(LazySimpleStructObjectInspector.class.getName());
-
+ public static final Log LOG = LogFactory
+ .getLog(LazySimpleStructObjectInspector.class.getName());
+
protected static class MyField implements StructField {
protected int fieldID;
protected String fieldName;
protected ObjectInspector fieldObjectInspector;
-
- public MyField(int fieldID, String fieldName, ObjectInspector fieldObjectInspector) {
+
+ public MyField(int fieldID, String fieldName,
+ ObjectInspector fieldObjectInspector) {
this.fieldID = fieldID;
this.fieldName = fieldName.toLowerCase();
this.fieldObjectInspector = fieldObjectInspector;
@@ -57,70 +60,81 @@
public int getFieldID() {
return fieldID;
}
+
public String getFieldName() {
return fieldName;
}
+
public ObjectInspector getFieldObjectInspector() {
return fieldObjectInspector;
}
-
+
+ @Override
public String toString() {
return "" + fieldID + ":" + fieldName;
}
}
-
+
protected List<MyField> fields;
-
+
@Override
public String getTypeName() {
return ObjectInspectorUtils.getStandardStructTypeName(this);
}
-
-
+
byte separator;
- Text nullSequence;
+ Text nullSequence;
boolean lastColumnTakesRest;
boolean escaped;
byte escapeChar;
-
- /** Call ObjectInspectorFactory.getLazySimpleStructObjectInspector instead.
+
+ /**
+ * Call ObjectInspectorFactory.getLazySimpleStructObjectInspector instead.
*/
- protected LazySimpleStructObjectInspector(List<String> structFieldNames, List<ObjectInspector> structFieldObjectInspectors,
- byte separator, Text nullSequence, boolean lastColumnTakesRest,
- boolean escaped, byte escapeChar) {
- init(structFieldNames, structFieldObjectInspectors, separator, nullSequence, lastColumnTakesRest,
- escaped, escapeChar);
- }
- protected void init(List<String> structFieldNames, List<ObjectInspector> structFieldObjectInspectors,
- byte separator, Text nullSequence, boolean lastColumnTakesRest, boolean escaped, byte escapeChar) {
- assert(structFieldNames.size() == structFieldObjectInspectors.size());
-
+ protected LazySimpleStructObjectInspector(List<String> structFieldNames,
+ List<ObjectInspector> structFieldObjectInspectors, byte separator,
+ Text nullSequence, boolean lastColumnTakesRest, boolean escaped,
+ byte escapeChar) {
+ init(structFieldNames, structFieldObjectInspectors, separator,
+ nullSequence, lastColumnTakesRest, escaped, escapeChar);
+ }
+
+ protected void init(List<String> structFieldNames,
+ List<ObjectInspector> structFieldObjectInspectors, byte separator,
+ Text nullSequence, boolean lastColumnTakesRest, boolean escaped,
+ byte escapeChar) {
+ assert (structFieldNames.size() == structFieldObjectInspectors.size());
+
this.separator = separator;
this.nullSequence = nullSequence;
this.lastColumnTakesRest = lastColumnTakesRest;
this.escaped = escaped;
this.escapeChar = escapeChar;
-
- fields = new ArrayList<MyField>(structFieldNames.size());
- for(int i=0; i<structFieldNames.size(); i++) {
- fields.add(new MyField(i, structFieldNames.get(i), structFieldObjectInspectors.get(i)));
+
+ fields = new ArrayList<MyField>(structFieldNames.size());
+ for (int i = 0; i < structFieldNames.size(); i++) {
+ fields.add(new MyField(i, structFieldNames.get(i),
+ structFieldObjectInspectors.get(i)));
}
}
-
- protected LazySimpleStructObjectInspector(List<StructField> fields, byte separator, Text nullSequence) {
+
+ protected LazySimpleStructObjectInspector(List<StructField> fields,
+ byte separator, Text nullSequence) {
init(fields, separator, nullSequence);
}
- protected void init(List<StructField> fields, byte separator, Text nullSequence) {
+
+ protected void init(List<StructField> fields, byte separator,
+ Text nullSequence) {
this.separator = separator;
this.nullSequence = nullSequence;
-
- this.fields = new ArrayList<MyField>(fields.size());
- for(int i=0; i<fields.size(); i++) {
- this.fields.add(new MyField(i, fields.get(i).getFieldName(), fields.get(i).getFieldObjectInspector()));
+
+ this.fields = new ArrayList<MyField>(fields.size());
+ for (int i = 0; i < fields.size(); i++) {
+ this.fields.add(new MyField(i, fields.get(i).getFieldName(), fields
+ .get(i).getFieldObjectInspector()));
}
}
-
@Override
public final Category getCategory() {
return Category.STRUCT;
@@ -131,6 +145,7 @@
public StructField getStructFieldRef(String fieldName) {
return ObjectInspectorUtils.getStandardStructFieldRef(fieldName, fields);
}
+
@Override
public List<? extends StructField> getAllStructFieldRefs() {
return fields;
@@ -142,12 +157,12 @@
if (data == null) {
return null;
}
- LazyStruct struct = (LazyStruct)data;
+ LazyStruct struct = (LazyStruct) data;
MyField f = (MyField) fieldRef;
-
+
int fieldID = f.getFieldID();
- assert(fieldID >= 0 && fieldID < fields.size());
-
+ assert (fieldID >= 0 && fieldID < fields.size());
+
return struct.getField(fieldID);
}
@@ -156,7 +171,7 @@
if (data == null) {
return null;
}
- LazyStruct struct = (LazyStruct)data;
+ LazyStruct struct = (LazyStruct) data;
return struct.getFieldsAsList();
}
@@ -164,17 +179,21 @@
public byte getSeparator() {
return separator;
}
+
public Text getNullSequence() {
return nullSequence;
}
+
public boolean getLastColumnTakesRest() {
return lastColumnTakesRest;
}
+
public boolean isEscaped() {
return escaped;
}
+
public byte getEscapeChar() {
return escapeChar;
}
-
+
}
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -23,22 +23,23 @@
import org.apache.hadoop.io.Writable;
/**
- * An AbstractPrimitiveLazyObjectInspector for a LazyPrimitive object.
+ * An AbstractPrimitiveLazyObjectInspector for a LazyPrimitive object.
*/
-public abstract class AbstractPrimitiveLazyObjectInspector<T extends Writable> extends AbstractPrimitiveObjectInspector {
+public abstract class AbstractPrimitiveLazyObjectInspector<T extends Writable>
+ extends AbstractPrimitiveObjectInspector {
protected AbstractPrimitiveLazyObjectInspector(PrimitiveTypeEntry typeEntry) {
- super(typeEntry);
+ super(typeEntry);
}
-
+
@Override
public T getPrimitiveWritableObject(Object o) {
- return o == null ? null : ((LazyPrimitive<?,T>)o).getWritableObject();
+ return o == null ? null : ((LazyPrimitive<?, T>) o).getWritableObject();
}
@Override
public boolean preferWritable() {
return true;
}
-
+
}
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -22,17 +22,17 @@
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
import org.apache.hadoop.io.BooleanWritable;
-
/**
* A WritableBooleanObjectInspector inspects a BooleanWritable Object.
*/
-public class LazyBooleanObjectInspector extends AbstractPrimitiveLazyObjectInspector<BooleanWritable>
-implements BooleanObjectInspector{
+public class LazyBooleanObjectInspector extends
+ AbstractPrimitiveLazyObjectInspector<BooleanWritable> implements
+ BooleanObjectInspector {
LazyBooleanObjectInspector() {
super(PrimitiveObjectInspectorUtils.booleanTypeEntry);
}
-
+
@Override
public boolean get(Object o) {
return getPrimitiveWritableObject(o).get();
@@ -40,7 +40,7 @@
@Override
public Object copyObject(Object o) {
- return o == null ? null : new LazyBoolean((LazyBoolean)o);
+ return o == null ? null : new LazyBoolean((LazyBoolean) o);
}
@Override
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyByteObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyByteObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyByteObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyByteObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -21,19 +21,18 @@
import org.apache.hadoop.hive.serde2.lazy.LazyByte;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.BooleanWritable;
-
/**
* A WritableByteObjectInspector inspects a ByteWritable Object.
*/
-public class LazyByteObjectInspector extends AbstractPrimitiveLazyObjectInspector<ByteWritable>
-implements ByteObjectInspector{
+public class LazyByteObjectInspector extends
+ AbstractPrimitiveLazyObjectInspector<ByteWritable> implements
+ ByteObjectInspector {
LazyByteObjectInspector() {
super(PrimitiveObjectInspectorUtils.byteTypeEntry);
}
-
+
@Override
public byte get(Object o) {
return getPrimitiveWritableObject(o).get();
@@ -41,7 +40,7 @@
@Override
public Object copyObject(Object o) {
- return o == null ? null : new LazyByte((LazyByte)o);
+ return o == null ? null : new LazyByte((LazyByte) o);
}
@Override
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -22,17 +22,17 @@
import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-
/**
* A WritableDoubleObjectInspector inspects a DoubleWritable Object.
*/
-public class LazyDoubleObjectInspector extends AbstractPrimitiveLazyObjectInspector<DoubleWritable>
-implements DoubleObjectInspector{
+public class LazyDoubleObjectInspector extends
+ AbstractPrimitiveLazyObjectInspector<DoubleWritable> implements
+ DoubleObjectInspector {
LazyDoubleObjectInspector() {
super(PrimitiveObjectInspectorUtils.doubleTypeEntry);
}
-
+
@Override
public double get(Object o) {
return getPrimitiveWritableObject(o).get();
@@ -40,7 +40,7 @@
@Override
public Object copyObject(Object o) {
- return o == null ? null : new LazyDouble((LazyDouble)o);
+ return o == null ? null : new LazyDouble((LazyDouble) o);
}
@Override
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyFloatObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyFloatObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyFloatObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyFloatObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -25,13 +25,14 @@
/**
* A FloatObjectInspector inspects a FloatWritable Object.
*/
-public class LazyFloatObjectInspector extends AbstractPrimitiveLazyObjectInspector<FloatWritable>
-implements FloatObjectInspector{
+public class LazyFloatObjectInspector extends
+ AbstractPrimitiveLazyObjectInspector<FloatWritable> implements
+ FloatObjectInspector {
LazyFloatObjectInspector() {
super(PrimitiveObjectInspectorUtils.floatTypeEntry);
}
-
+
@Override
public float get(Object o) {
return getPrimitiveWritableObject(o).get();
@@ -39,7 +40,7 @@
@Override
public Object copyObject(Object o) {
- return o == null ? null : new LazyFloat((LazyFloat)o);
+ return o == null ? null : new LazyFloat((LazyFloat) o);
}
@Override
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyIntObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyIntObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyIntObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyIntObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -22,17 +22,17 @@
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
import org.apache.hadoop.io.IntWritable;
-
/**
* A WritableIntObjectInspector inspects a IntWritable Object.
*/
-public class LazyIntObjectInspector extends AbstractPrimitiveLazyObjectInspector<IntWritable>
-implements IntObjectInspector{
+public class LazyIntObjectInspector extends
+ AbstractPrimitiveLazyObjectInspector<IntWritable> implements
+ IntObjectInspector {
LazyIntObjectInspector() {
super(PrimitiveObjectInspectorUtils.intTypeEntry);
}
-
+
@Override
public int get(Object o) {
return getPrimitiveWritableObject(o).get();
@@ -40,7 +40,7 @@
@Override
public Object copyObject(Object o) {
- return o == null ? null : new LazyInteger((LazyInteger)o);
+ return o == null ? null : new LazyInteger((LazyInteger) o);
}
@Override
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyLongObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyLongObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyLongObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyLongObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -22,17 +22,17 @@
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
import org.apache.hadoop.io.LongWritable;
-
/**
* A WritableLongObjectInspector inspects a LongWritable Object.
*/
-public class LazyLongObjectInspector extends AbstractPrimitiveLazyObjectInspector<LongWritable>
-implements LongObjectInspector{
+public class LazyLongObjectInspector extends
+ AbstractPrimitiveLazyObjectInspector<LongWritable> implements
+ LongObjectInspector {
LazyLongObjectInspector() {
super(PrimitiveObjectInspectorUtils.longTypeEntry);
}
-
+
@Override
public long get(Object o) {
return getPrimitiveWritableObject(o).get();
@@ -40,7 +40,7 @@
@Override
public Object copyObject(Object o) {
- return o == null ? null : new LazyLong((LazyLong)o);
+ return o == null ? null : new LazyLong((LazyLong) o);
}
@Override
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java Thu Jan 21 08:59:22 2010
@@ -20,37 +20,20 @@
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.UnionStructObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.AbstractPrimitiveJavaObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableBooleanObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableByteObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableDoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableFloatObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableIntObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableLongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableShortObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableVoidObjectInspector;
-import org.apache.hadoop.io.Text;
-
/**
- * LazyPrimitiveObjectInspectorFactory is the primary way to create new ObjectInspector instances.
+ * LazyPrimitiveObjectInspectorFactory is the primary way to create new
+ * ObjectInspector instances.
*
- * SerDe classes should call the static functions in this library to create an ObjectInspector
- * to return to the caller of SerDe2.getObjectInspector().
+ * SerDe classes should call the static functions in this library to create an
+ * ObjectInspector to return to the caller of SerDe2.getObjectInspector().
*
- * The reason of having caches here is that ObjectInspector is because ObjectInspectors do
- * not have an internal state - so ObjectInspectors with the same construction parameters should
- * result in exactly the same ObjectInspector.
+ * The reason of having caches here is that ObjectInspector is because
+ * ObjectInspectors do not have an internal state - so ObjectInspectors with the
+ * same construction parameters should result in exactly the same
+ * ObjectInspector.
*/
public class LazyPrimitiveObjectInspectorFactory {
@@ -62,38 +45,48 @@
public final static LazyFloatObjectInspector lazyFloatObjectInspector = new LazyFloatObjectInspector();
public final static LazyDoubleObjectInspector lazyDoubleObjectInspector = new LazyDoubleObjectInspector();
public final static LazyVoidObjectInspector lazyVoidObjectInspector = new LazyVoidObjectInspector();
-
- static HashMap<ArrayList<Object>, LazyStringObjectInspector> cachedLazyStringObjectInspector =
- new HashMap<ArrayList<Object>, LazyStringObjectInspector>();
- public static LazyStringObjectInspector getLazyStringObjectInspector(boolean escaped, byte escapeChar) {
+
+ static HashMap<ArrayList<Object>, LazyStringObjectInspector> cachedLazyStringObjectInspector = new HashMap<ArrayList<Object>, LazyStringObjectInspector>();
+
+ public static LazyStringObjectInspector getLazyStringObjectInspector(
+ boolean escaped, byte escapeChar) {
ArrayList<Object> signature = new ArrayList<Object>();
signature.add(Boolean.valueOf(escaped));
signature.add(Byte.valueOf(escapeChar));
- LazyStringObjectInspector result = cachedLazyStringObjectInspector.get(signature);
+ LazyStringObjectInspector result = cachedLazyStringObjectInspector
+ .get(signature);
if (result == null) {
result = new LazyStringObjectInspector(escaped, escapeChar);
cachedLazyStringObjectInspector.put(signature, result);
}
return result;
}
-
+
public static AbstractPrimitiveLazyObjectInspector<?> getLazyObjectInspector(
PrimitiveCategory primitiveCategory, boolean escaped, byte escapeChar) {
-
- switch(primitiveCategory) {
- case BOOLEAN: return lazyBooleanObjectInspector;
- case BYTE: return lazyByteObjectInspector;
- case SHORT: return lazyShortObjectInspector;
- case INT: return lazyIntObjectInspector;
- case LONG: return lazyLongObjectInspector;
- case FLOAT: return lazyFloatObjectInspector;
- case DOUBLE: return lazyDoubleObjectInspector;
- case STRING: return getLazyStringObjectInspector(escaped, escapeChar);
+
+ switch (primitiveCategory) {
+ case BOOLEAN:
+ return lazyBooleanObjectInspector;
+ case BYTE:
+ return lazyByteObjectInspector;
+ case SHORT:
+ return lazyShortObjectInspector;
+ case INT:
+ return lazyIntObjectInspector;
+ case LONG:
+ return lazyLongObjectInspector;
+ case FLOAT:
+ return lazyFloatObjectInspector;
+ case DOUBLE:
+ return lazyDoubleObjectInspector;
+ case STRING:
+ return getLazyStringObjectInspector(escaped, escapeChar);
case VOID:
- default:
- throw new RuntimeException("Internal error: Cannot find ObjectInspector "
- + " for " + primitiveCategory);
+ default:
+ throw new RuntimeException("Internal error: Cannot find ObjectInspector "
+ + " for " + primitiveCategory);
}
}
-
+
}
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyShortObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyShortObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyShortObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyShortObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -22,17 +22,17 @@
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.ShortObjectInspector;
-
/**
* A WritableShortObjectInspector inspects a ShortWritable Object.
*/
-public class LazyShortObjectInspector extends AbstractPrimitiveLazyObjectInspector<ShortWritable>
-implements ShortObjectInspector{
+public class LazyShortObjectInspector extends
+ AbstractPrimitiveLazyObjectInspector<ShortWritable> implements
+ ShortObjectInspector {
LazyShortObjectInspector() {
super(PrimitiveObjectInspectorUtils.shortTypeEntry);
}
-
+
@Override
public short get(Object o) {
return getPrimitiveWritableObject(o).get();
@@ -40,7 +40,7 @@
@Override
public Object copyObject(Object o) {
- return o == null ? null : new LazyShort((LazyShort)o);
+ return o == null ? null : new LazyShort((LazyShort) o);
}
@Override
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyStringObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyStringObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyStringObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyStringObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -22,16 +22,15 @@
import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
import org.apache.hadoop.io.Text;
-
/**
* A WritableStringObjectInspector inspects a Text Object.
*/
-public class LazyStringObjectInspector extends AbstractPrimitiveLazyObjectInspector<Text>
-implements StringObjectInspector{
+public class LazyStringObjectInspector extends
+ AbstractPrimitiveLazyObjectInspector<Text> implements StringObjectInspector {
boolean escaped;
byte escapeChar;
-
+
LazyStringObjectInspector(boolean escaped, byte escapeChar) {
super(PrimitiveObjectInspectorUtils.stringTypeEntry);
this.escaped = escaped;
@@ -40,25 +39,25 @@
@Override
public Object copyObject(Object o) {
- return o == null ? null : new LazyString((LazyString)o);
+ return o == null ? null : new LazyString((LazyString) o);
}
@Override
public Text getPrimitiveWritableObject(Object o) {
- return o == null ? null : ((LazyString)o).getWritableObject();
+ return o == null ? null : ((LazyString) o).getWritableObject();
}
-
+
@Override
public String getPrimitiveJavaObject(Object o) {
- return o == null ? null : ((LazyString)o).getWritableObject().toString();
+ return o == null ? null : ((LazyString) o).getWritableObject().toString();
}
public boolean isEscaped() {
return escaped;
}
+
public byte getEscapeChar() {
return escapeChar;
}
-
-
+
}
Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyVoidObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyVoidObjectInspector.java?rev=901604&r1=901603&r2=901604&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyVoidObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyVoidObjectInspector.java Thu Jan 21 08:59:22 2010
@@ -21,17 +21,17 @@
import org.apache.hadoop.hive.serde2.objectinspector.primitive.VoidObjectInspector;
import org.apache.hadoop.io.NullWritable;
-
/**
* A WritableVoidObjectInspector inspects a NullWritable Object.
*/
-public class LazyVoidObjectInspector extends AbstractPrimitiveLazyObjectInspector<NullWritable>
-implements VoidObjectInspector{
+public class LazyVoidObjectInspector extends
+ AbstractPrimitiveLazyObjectInspector<NullWritable> implements
+ VoidObjectInspector {
LazyVoidObjectInspector() {
super(PrimitiveObjectInspectorUtils.voidTypeEntry);
}
-
+
@Override
public Object copyObject(Object o) {
return o;