Object rowField = row.getField(fieldID);
private void deserializeAndSerializeHBaseValueStruct(HBaseSerDe serDe, Result r, Put p) throws SerDeException, IOException { StructObjectInspector soi = (StructObjectInspector) serDe.getObjectInspector(); List<? extends StructField> fieldRefs = soi.getAllStructFieldRefs(); Object row = serDe.deserialize(new ResultWritable(r)); Object fieldData = null; for (int j = 0; j < fieldRefs.size(); j++) { fieldData = soi.getStructFieldData(row, fieldRefs.get(j)); assertNotNull(fieldData); if (fieldData instanceof LazyStruct) { assertEquals(((LazyStruct) fieldData).getField(0).toString(), "A"); assertEquals(((LazyStruct) fieldData).getField(1).toString(), "B"); assertEquals(((LazyStruct) fieldData).getField(2).toString(), "C"); } else { Assert.fail("fieldData should be an instance of LazyStruct"); } } assertEquals( "{\"key\":{\"col1\":\"A\",\"col2\":\"B\",\"col3\":\"C\"},\"astring\":{\"col1\":\"A\",\"col2\":\"B\",\"col3\":\"C\"}}", SerDeUtils.getJSONString(row, soi)); // Now serialize Put put = ((PutWritable) serDe.serialize(row, soi)).getPut(); assertEquals("Serialized put:", p.toString(), put.toString()); }
@Override public Object getStructFieldData(Object data, StructField fieldRef) { if (data == null) { return null; } LazyStruct struct = (LazyStruct) data; MyField f = (MyField) fieldRef; int fieldID = f.getFieldID(); assert (fieldID >= 0 && fieldID < fields.size()); return struct.getField(fieldID); }
Object rowField = row.getField(fieldID);
Object rowField = row.getField(fieldID);
Object rowField = row.getField(fieldID);
Object rowField = row.getField(fieldID);