@Override public ResultWritable createValue() { return new ResultWritable(rr.createValue()); }
@Test public void testResult() throws Exception { // Initialize a result KeyValue[] kvs = new KeyValue[] { new KeyValue(Bytes.toBytes("test-row"), Bytes.toBytes("cfa"), Bytes.toBytes("col1"), Bytes.toBytes("cfacol1")), new KeyValue(Bytes.toBytes("test-row"), Bytes.toBytes("cfa"), Bytes.toBytes("col2"), Bytes.toBytes("cfacol2")) }; Result expected = Result.create(kvs); ResultWritable actual = copy(new ResultWritable(expected), new ResultWritable()); Assert.assertArrayEquals(expected.rawCells(), actual.getResult().rawCells()); }
@Override public boolean next(ImmutableBytesWritable rowKey, ResultWritable value) throws IOException { boolean next = false; try { next = recordReader.nextKeyValue(); if (next) { rowKey.set(recordReader.getCurrentValue().getRow()); value.setResult(recordReader.getCurrentValue()); } } catch (InterruptedException e) { throw new IOException(e); } return next; } };
@Override public boolean next(ImmutableBytesWritable key, ResultWritable value) throws IOException { return rr.next(key, value.getResult()); }
/** * Deserialize a row from the HBase Result writable to a LazyObject * @param result the HBase Result Writable containing the row * @return the deserialized object * @see AbstractSerDe#deserialize(Writable) */ @Override public Object deserialize(Writable result) throws SerDeException { if (!(result instanceof ResultWritable)) { throw new SerDeException(getClass().getName() + ": expects ResultWritable!"); } cachedHBaseRow.init(((ResultWritable) result).getResult()); return cachedHBaseRow; }
@Override public ResultWritable createValue() { return new ResultWritable(new Result()); }
@Override public boolean next(ImmutableBytesWritable key, ResultWritable value) throws IOException { return rr.next(key, value.getResult()); }
@Override public boolean next(ImmutableBytesWritable key, ResultWritable value) throws IOException { if (this.resultItr == null) { LOG.warn("The HBase result iterator is found null. It is possible" + " that the record reader has already been closed."); } else { while (resultItr.hasNext()) { Result temp = resultItr.next(); Result hbaseRow = prepareResult(temp.list()); if (hbaseRow != null) { // Update key and value. Currently no way to avoid serialization/de-serialization // as no setters are available. key.set(hbaseRow.getRow()); value.setResult(hbaseRow); return true; } } } return false; }
private void deserializeAndSerializeHiveAvro(HBaseSerDe serDe, Result r, Put p, Object[] expectedFieldsData, String expectedDeserializedAvroString) throws SerDeException, IOException { StructObjectInspector soi = (StructObjectInspector) serDe.getObjectInspector(); List<? extends StructField> fieldRefs = soi.getAllStructFieldRefs(); Object row = serDe.deserialize(new ResultWritable(r)); for (int j = 0; j < fieldRefs.size(); j++) { Object fieldData = soi.getStructFieldData(row, fieldRefs.get(j)); assertNotNull(fieldData); assertEquals(expectedFieldsData[j], fieldData.toString().trim()); } assertEquals(expectedDeserializedAvroString, SerDeUtils.getJSONString(row, soi)); // Now serialize Put put = ((PutWritable) serDe.serialize(row, soi)).getPut(); assertNotNull(put); assertEquals(p.getFamilyCellMap(), put.getFamilyCellMap()); }
/** * Deserialize a row from the HBase Result writable to a LazyObject * @param result the HBase Result Writable containing the row * @return the deserialized object * @see SerDe#deserialize(Writable) */ @Override public Object deserialize(Writable result) throws SerDeException { if (!(result instanceof ResultWritable)) { throw new SerDeException(getClass().getName() + ": expects ResultWritable!"); } cachedHBaseRow.init(((ResultWritable) result).getResult()); return cachedHBaseRow; }
@Override public boolean next(ImmutableBytesWritable rowKey, ResultWritable value) throws IOException { boolean next = false; try { next = recordReader.nextKeyValue(); if (next) { rowKey.set(recordReader.getCurrentValue().getRow()); value.setResult(recordReader.getCurrentValue()); } } catch (InterruptedException e) { throw new IOException(e); } return next; } };
private void deserializeAndSerialize( HBaseSerDe serDe, Result r, Put p, Object[] expectedFieldsData) throws SerDeException { // Get the row structure StructObjectInspector oi = (StructObjectInspector) serDe.getObjectInspector(); List<? extends StructField> fieldRefs = oi.getAllStructFieldRefs(); assertEquals(9, fieldRefs.size()); // Deserialize Object row = serDe.deserialize(new ResultWritable(r)); for (int i = 0; i < fieldRefs.size(); i++) { Object fieldData = oi.getStructFieldData(row, fieldRefs.get(i)); if (fieldData != null) { fieldData = ((LazyPrimitive<?, ?>)fieldData).getWritableObject(); } assertEquals("Field " + i, expectedFieldsData[i], fieldData); } // Serialize assertEquals(PutWritable.class, serDe.getSerializedClass()); PutWritable serializedPut = (PutWritable) serDe.serialize(row, oi); assertEquals("Serialized data", p.toString(),String.valueOf(serializedPut.getPut())); }
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()); }
private void deserializeAndSerializeHBaseCompositeKey(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)); for (int j = 0; j < fieldRefs.size(); j++) { Object fieldData = soi.getStructFieldData(row, fieldRefs.get(j)); assertNotNull(fieldData); } assertEquals( "{\"key\":{\"col1\":\"A\",\"col2\":\"B\",\"col3\":\"C\"},\"astring\":\"This is a test data\"}", SerDeUtils.getJSONString(row, soi)); // Now serialize Put put = ((PutWritable) serDe.serialize(row, soi)).getPut(); assertEquals("Serialized put:", p.toString(), put.toString()); }
Object row = serDe.deserialize(new ResultWritable(r));
Object row = serDe.deserialize(new ResultWritable(r));
private void deserializeAndSerializeHiveMapHBaseColumnFamilyII( HBaseSerDe hbaseSerDe, Result r, Put p, Object [] expectedData, byte [][] columnFamilies, byte [][] columnQualifiersAndValues) throws SerDeException { StructObjectInspector soi = (StructObjectInspector) hbaseSerDe.getObjectInspector(); List<? extends StructField> fieldRefs = soi.getAllStructFieldRefs(); assertEquals(9, fieldRefs.size()); // Deserialize Object row = hbaseSerDe.deserialize(new ResultWritable(r)); for (int j = 0; j < fieldRefs.size(); j++) { Object fieldData = soi.getStructFieldData(row, fieldRefs.get(j)); assertNotNull(fieldData); if (fieldData instanceof LazyPrimitive<?, ?>) { assertEquals(expectedData[j], ((LazyPrimitive<?, ?>) fieldData).getWritableObject()); } else if (fieldData instanceof LazyHBaseCellMap) { LazyPrimitive<?, ?> lazyPrimitive = (LazyPrimitive<?, ?>) ((LazyHBaseCellMap) fieldData).getMapValueElement(expectedData[j]); assertEquals(expectedData[j], lazyPrimitive.getWritableObject()); } else { fail("Error: field data not an instance of LazyPrimitive<?, ?> or LazyHBaseCellMap"); } } // Serialize Put serializedPut = ((PutWritable) hbaseSerDe.serialize(row, soi)).getPut(); assertEquals("Serialized data: ", p.toString(), serializedPut.toString()); }
Object row = hbaseSerDe.deserialize(new ResultWritable(r[i])); Put serializedPut = ((PutWritable) hbaseSerDe.serialize(row, soi)).getPut(); byte [] rowKey = serializedPut.getRow();
@Override public ResultWritable createValue() { return new ResultWritable(); }
@Override public ResultWritable createValue() { return new ResultWritable(rr.createValue()); }