out.write(separator); serializeNoEncode(out, list.get(i), eoi, separators, level + 1, nullSequence, escaped, escapeChar, needsEscape); out.write(separator); serializeNoEncode(out, entry.getKey(), koi, separators, level + 2, nullSequence, escaped, escapeChar, needsEscape); out.write(keyValueSeparator); serializeNoEncode(out, entry.getValue(), voi, separators, level + 2, nullSequence, escaped, escapeChar, needsEscape); out.write(separator); serializeNoEncode(out, list.get(i), fields.get(i).getFieldObjectInspector(), separators, level + 1, nullSequence, escaped, escapeChar, needsEscape);
out.write(separator); serializeNoEncode(out, list.get(i), eoi, separators, level + 1, nullSequence, escaped, escapeChar, needsEscape); out.write(separator); serializeNoEncode(out, entry.getKey(), koi, separators, level + 2, nullSequence, escaped, escapeChar, needsEscape); out.write(keyValueSeparator); serializeNoEncode(out, entry.getValue(), voi, separators, level + 2, nullSequence, escaped, escapeChar, needsEscape); out.write(separator); serializeNoEncode(out, list.get(i), fields.get(i).getFieldObjectInspector(), separators, level + 1, nullSequence, escaped, escapeChar, needsEscape);
@Override public Writable serialize(Object obj, ObjectInspector objInspector) throws SerDeException { StructObjectInspector soi = (StructObjectInspector) objInspector; List<? extends StructField> fields = soi.getAllStructFieldRefs(); List<Object> list = soi.getStructFieldsDataAsList(obj); if (fields.size() != numColumns) { throw new SerDeException("Cannot serialize the object because there are " + fields.size() + " fields but the table has " + numColumns + " columns."); } serializeStream.reset(); // Get all data out. for (int c = 0; c < numColumns; c++) { //write the delimiter to the stream, which means we don't need output.format.string anymore if (c > 0) { serializeStream.write(fieldDelimited.getBytes(), 0, fieldDelimited.getBytes().length); } Object field = list == null ? null : list.get(c); ObjectInspector fieldOI = fields.get(c).getFieldObjectInspector(); try { serializeNoEncode(serializeStream, field, fieldOI, serdeParams.getSeparators(), 1, serdeParams.getNullSequence(), serdeParams.isEscaped(), serdeParams.getEscapeChar(), serdeParams.getNeedsEscape()); } catch (IOException e) { throw new SerDeException(e); } } serializeCache.set(serializeStream.getData(), 0, serializeStream.getLength()); return serializeCache; }
@Override public Writable serialize(Object obj, ObjectInspector objInspector) throws SerDeException { StructObjectInspector soi = (StructObjectInspector) objInspector; List<? extends StructField> fields = soi.getAllStructFieldRefs(); List<Object> list = soi.getStructFieldsDataAsList(obj); if (fields.size() != numColumns) { throw new SerDeException("Cannot serialize the object because there are " + fields.size() + " fields but the table has " + numColumns + " columns."); } serializeStream.reset(); // Get all data out. for (int c = 0; c < numColumns; c++) { //write the delimiter to the stream, which means we don't need output.format.string anymore if (c > 0) { serializeStream.write(fieldDelimited.getBytes(), 0, fieldDelimited.getBytes().length); } Object field = list == null ? null : list.get(c); ObjectInspector fieldOI = fields.get(c).getFieldObjectInspector(); try { serializeNoEncode(serializeStream, field, fieldOI, serdeParams.getSeparators(), 1, serdeParams.getNullSequence(), serdeParams.isEscaped(), serdeParams.getEscapeChar(), serdeParams.getNeedsEscape()); } catch (IOException e) { throw new SerDeException(e); } } serializeCache.set(serializeStream.getData(), 0, serializeStream.getLength()); return serializeCache; }