byte separator = oi.getSeparator(); boolean lastColumnTakesRest = oi.getLastColumnTakesRest(); boolean isEscaped = oi.isEscaped(); byte escapeChar = oi.getEscapeChar(); initLazyFields(oi.getAllStructFieldRefs());
/** * 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) { if (fieldInited[fieldID]) { return fields[fieldID].getObject(); } fieldInited[fieldID] = true; int fieldByteBegin = startPosition[fieldID]; int fieldLength = startPosition[fieldID + 1] - startPosition[fieldID] - 1; if (isNull(oi.getNullSequence(), bytes, fieldByteBegin, fieldLength)) { fields[fieldID].setNull(); } else { fields[fieldID].init(bytes, fieldByteBegin, fieldLength); } return fields[fieldID].getObject(); }
case JAVA: result = new LazySimpleStructObjectInspector(structFieldNames, structFieldObjectInspectors, structFieldComments, separator, lazyParams); break;
@Override public ArrayList<Object> getFieldsAsList() { ArrayList<Object> allFields = new ArrayList<Object>(); List<? extends StructField> fields = oi.getAllStructFieldRefs(); for (int i = 0; i < fields.size(); i++) { allFields.add(getField(i)); } return allFields; }
protected void init(List<String> structFieldNames, List<ObjectInspector> structFieldObjectInspectors, List<String> structFieldComments, byte separator, LazyObjectInspectorParameters lazyParams) { init(structFieldNames, structFieldObjectInspectors, structFieldComments); this.separator = separator; this.lazyParams = lazyParams; }
@Override public List<Object> getStructFieldsDataAsList(Object data) { if (data == null) { return null; } // Iterate over all the fields picking up the nested structs within them List<Object> result = new ArrayList<Object>(fields.size()); for (MyField myField : fields) { result.add(getStructFieldData(data, myField)); } return result; }
@Override public ArrayList<Object> getFieldsAsList() { ArrayList<Object> allFields = new ArrayList<Object>(); List<? extends StructField> fields = oi.getAllStructFieldRefs(); for (int i = 0; i < fields.size(); i++) { allFields.add(getField(i)); } return allFields; }
public LazySimpleStructObjectInspector(List<String> structFieldNames, List<ObjectInspector> structFieldObjectInspectors, List<String> structFieldComments, byte separator, LazyObjectInspectorParameters lazyParams) { init(structFieldNames, structFieldObjectInspectors, structFieldComments, separator, lazyParams); }
@Override public List<Object> getStructFieldsDataAsList(Object data) { if (data == null) { return null; } // Iterate over all the fields picking up the nested structs within them List<Object> result = new ArrayList<Object>(fields.size()); for (MyField myField : fields) { result.add(getStructFieldData(data, myField)); } return result; }
byte separator = oi.getSeparator(); boolean lastColumnTakesRest = oi.getLastColumnTakesRest(); boolean isEscaped = oi.isEscaped(); byte escapeChar = oi.getEscapeChar(); initLazyFields(oi.getAllStructFieldRefs());
public void parseMultiDelimit(byte[] rawRow, byte[] fieldDelimit) { if (rawRow == null || fieldDelimit == null) { return; } if (fields == null) { List<? extends StructField> fieldRefs = oi.getAllStructFieldRefs(); fields = new LazyObject[fieldRefs.size()]; for (int i = 0; i < fields.length; i++) { fields[i] = LazyFactory.createLazyObject(fieldRefs.get(i).getFieldObjectInspector()); } fieldInited = new boolean[fields.length]; startPosition = new int[fields.length + 1]; } // the indexes of the delimiters int[] delimitIndexes = findIndexes(rawRow, fieldDelimit); int diff = fieldDelimit.length - 1; // first field always starts from 0, even when missing startPosition[0] = 0; for (int i = 1; i < fields.length; i++) { if (delimitIndexes[i - 1] != -1) { int start = delimitIndexes[i - 1] + fieldDelimit.length; startPosition[i] = start - i * diff; } else { startPosition[i] = length + 1; } } startPosition[fields.length] = length + 1; Arrays.fill(fieldInited, false); parsed = true; }
if (bytes == null || isNull(oi.getNullSequence(), bytes, 0, bytes.length)) { fields[fieldID].setNull(); } else {
/** * Call ObjectInspectorFactory.getLazySimpleStructObjectInspector instead. */ @Deprecated protected LazySimpleStructObjectInspector(List<String> structFieldNames, List<ObjectInspector> structFieldObjectInspectors, byte separator, Text nullSequence, boolean lastColumnTakesRest, boolean escaped, byte escapeChar) { init(structFieldNames, structFieldObjectInspectors, null, separator, nullSequence, lastColumnTakesRest, escaped, escapeChar); }
destinationOi = new LazySimpleStructObjectInspector( childNames, childOis, null, (byte)0, null); destinationBatch.setPartitionInfo(sourceIncludes.size(), 0);
@Override public List<Object> getStructFieldsDataAsList(Object data) { if (data == null) { return null; } // Iterate over all the fields picking up the nested structs within them List<Object> result = new ArrayList<Object>(fields.size()); for (MyField myField : fields) { result.add(getStructFieldData(data, myField)); } return result; }
byte separator = oi.getSeparator(); boolean lastColumnTakesRest = oi.getLastColumnTakesRest(); boolean isEscaped = oi.isEscaped(); byte escapeChar = oi.getEscapeChar(); initLazyFields(oi.getAllStructFieldRefs());
private void initFields() { if (getFields() == null) { initLazyFields(oi.getAllStructFieldRefs()); } if (!getParsed()) { Arrays.fill(getFieldInited(), false); setParsed(true); } }
/** * 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[] // comparison. int fieldByteBegin = startPosition[fieldID]; 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)) { return null; } if (!fieldInited[fieldID]) { fieldInited[fieldID] = true; fields[fieldID].init(bytes, fieldByteBegin, fieldLength); } return fields[fieldID].getObject(); }
@Deprecated public LazySimpleStructObjectInspector(List<String> structFieldNames, List<ObjectInspector> structFieldObjectInspectors, List<String> structFieldComments, byte separator, Text nullSequence, boolean lastColumnTakesRest, boolean escaped, byte escapeChar) { init(structFieldNames, structFieldObjectInspectors, structFieldComments, separator, nullSequence, lastColumnTakesRest, escaped, 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); signature.add(Byte.valueOf(separator)); signature.add(nullSequence.toString()); signature.add(Boolean.valueOf(lastColumnTakesRest)); signature.add(Boolean.valueOf(escaped)); signature.add(Byte.valueOf(escapeChar)); LazySimpleStructObjectInspector result = cachedLazySimpleStructObjectInspector .get(signature); if (result == null) { result = new LazySimpleStructObjectInspector(structFieldNames, structFieldObjectInspectors, separator, nullSequence, lastColumnTakesRest, escaped, escapeChar); cachedLazySimpleStructObjectInspector.put(signature, result); } return result; }