public static boolean recordsEqual(HCatRecord first, HCatRecord second, StringBuilder debugDetail) { return (compareRecords(first, second, debugDetail) == 0); }
public static boolean recordsEqual(HCatRecord first, HCatRecord second) { return recordsEqual(first, second, null); } public static boolean recordsEqual(HCatRecord first, HCatRecord second,
public static int compareRecords(HCatRecord first, HCatRecord second, StringBuilder debugDetail) { return compareRecordContents(first.getAll(), second.getAll(), debugDetail); }
public void testEqualsObject() { HCatRecord[] recs = getHCatRecords(); Assert.assertTrue(HCatDataCheckUtil.recordsEqual(recs[0], recs[1])); Assert.assertTrue(HCatDataCheckUtil.recordsEqual(recs[4], recs[5])); }
public static int compareRecords(HCatRecord first, HCatRecord second) { return compareRecords(first, second, null); } public static int compareRecords(HCatRecord first, HCatRecord second,
public void testUpperCaseKey() throws Exception { Configuration conf = new Configuration(); Properties props = new Properties(); props.put(serdeConstants.LIST_COLUMNS, "empid,name"); props.put(serdeConstants.LIST_COLUMN_TYPES, "int,string"); JsonSerDe rjsd = new JsonSerDe(); SerDeUtils.initializeSerDe(rjsd, conf, props, null); Text text1 = new Text("{ \"empId\" : 123, \"name\" : \"John\" } "); Text text2 = new Text("{ \"empId\" : 456, \"name\" : \"Jane\" } "); HCatRecord expected1 = new DefaultHCatRecord(Arrays.<Object>asList(123, "John")); HCatRecord expected2 = new DefaultHCatRecord(Arrays.<Object>asList(456, "Jane")); assertTrue(HCatDataCheckUtil.recordsEqual((HCatRecord)rjsd.deserialize(text1), expected1)); assertTrue(HCatDataCheckUtil.recordsEqual((HCatRecord)rjsd.deserialize(text2), expected2)); }
public void testCompareTo() { HCatRecord[] recs = getHCatRecords(); Assert.assertTrue(HCatDataCheckUtil.compareRecords(recs[0], recs[1]) == 0); Assert.assertTrue(HCatDataCheckUtil.compareRecords(recs[4], recs[5]) == 0); }
/** * test that we properly serialize/deserialize HCatRecordS * @throws IOException */ public void testRYW() throws IOException { File f = new File("binary.dat"); f.delete(); f.createNewFile(); f.deleteOnExit(); OutputStream fileOutStream = new FileOutputStream(f); DataOutput outStream = new DataOutputStream(fileOutStream); HCatRecord[] recs = getHCatRecords(); for (int i = 0; i < recs.length; i++) { recs[i].write(outStream); } fileOutStream.flush(); fileOutStream.close(); InputStream fInStream = new FileInputStream(f); DataInput inpStream = new DataInputStream(fInStream); for (int i = 0; i < recs.length; i++) { HCatRecord rec = new DefaultHCatRecord(); rec.readFields(inpStream); StringBuilder msg = new StringBuilder("recs[" + i + "]='" + recs[i] + "' rec='" + rec + "'"); boolean isEqual = HCatDataCheckUtil.recordsEqual(recs[i], rec, msg); Assert.assertTrue(msg.toString(), isEqual); } Assert.assertEquals(fInStream.available(), 0); fInStream.close(); }
System.err.println("record : " + r.toString()); assertTrue(HCatDataCheckUtil.recordsEqual(r, expectedRecord));
public void testMapValues() throws Exception { Configuration conf = new Configuration(); Properties props = new Properties(); props.put(serdeConstants.LIST_COLUMNS, "a,b"); props.put(serdeConstants.LIST_COLUMN_TYPES, "array<string>,map<string,int>"); JsonSerDe rjsd = new JsonSerDe(); SerDeUtils.initializeSerDe(rjsd, conf, props, null); Text text1 = new Text("{ \"a\":[\"aaa\"],\"b\":{\"bbb\":1}} "); Text text2 = new Text("{\"a\":[\"yyy\"],\"b\":{\"zzz\":123}}"); Text text3 = new Text("{\"a\":[\"a\"],\"b\":{\"x\":11, \"y\": 22, \"z\": null}}"); HCatRecord expected1 = new DefaultHCatRecord(Arrays.<Object>asList( Arrays.<String>asList("aaa"), createHashMapStringInteger("bbb", 1))); HCatRecord expected2 = new DefaultHCatRecord(Arrays.<Object>asList( Arrays.<String>asList("yyy"), createHashMapStringInteger("zzz", 123))); HCatRecord expected3 = new DefaultHCatRecord(Arrays.<Object>asList( Arrays.<String>asList("a"), createHashMapStringInteger("x", 11, "y", 22, "z", null))); assertTrue(HCatDataCheckUtil.recordsEqual((HCatRecord)rjsd.deserialize(text1), expected1)); assertTrue(HCatDataCheckUtil.recordsEqual((HCatRecord)rjsd.deserialize(text2), expected2)); } }
LOG.info("deserialized TWO : {} ", o2); StringBuilder msg = new StringBuilder(); boolean isEqual = HCatDataCheckUtil.recordsEqual(r, (HCatRecord) o2, msg); assertTrue(msg.toString(), isEqual);
public void testRW() throws Exception { Configuration conf = new Configuration(); for (Pair<Properties, HCatRecord> e : getData()) { Properties tblProps = e.first; HCatRecord r = e.second; HCatRecordSerDe hrsd = new HCatRecordSerDe(); SerDeUtils.initializeSerDe(hrsd, conf, tblProps, null); JsonSerDe jsde = new JsonSerDe(); SerDeUtils.initializeSerDe(jsde, conf, tblProps, null); LOG.info("ORIG:{}", r); Writable s = hrsd.serialize(r, hrsd.getObjectInspector()); LOG.info("ONE:{}", s); HCatRecord o1 = (HCatRecord) hrsd.deserialize(s); StringBuilder msg = new StringBuilder(); boolean isEqual = HCatDataCheckUtil.recordsEqual(r, o1); assertTrue(msg.toString(), isEqual); Writable s2 = jsde.serialize(o1, hrsd.getObjectInspector()); LOG.info("TWO:{}", s2); HCatRecord o2 = (HCatRecord) jsde.deserialize(s2); LOG.info("deserialized TWO : {} ", o2); msg.setLength(0); isEqual = HCatDataCheckUtil.recordsEqual(r, o2, msg); assertTrue(msg.toString(), isEqual); } }
Assert.assertTrue(HCatDataCheckUtil.recordsEqual(r, r2)); Assert.assertTrue(HCatDataCheckUtil.recordsEqual(r, (HCatRecord) s)); Assert.assertTrue(HCatDataCheckUtil.recordsEqual(r, (HCatRecord) s2));
/** * Test get and set calls with type * @throws HCatException */ public void testGetSetByType2() throws HCatException { HCatRecord inpRec = getGetSet2InpRec(); HCatRecord newRec = new DefaultHCatRecord(inpRec.size()); HCatSchema hsch = HCatSchemaUtils.getHCatSchema("a:binary,b:map<string,string>,c:array<int>,d:struct<i:int>"); newRec.setByteArray("a", hsch, inpRec.getByteArray("a", hsch)); newRec.setMap("b", hsch, inpRec.getMap("b", hsch)); newRec.setList("c", hsch, inpRec.getList("c", hsch)); newRec.setStruct("d", hsch, inpRec.getStruct("d", hsch)); Assert.assertTrue(HCatDataCheckUtil.recordsEqual(newRec, inpRec)); }
/** * Test get and set calls with type * @throws HCatException */ public void testGetSetByType1() throws HCatException { HCatRecord inpRec = getHCatRecords()[0]; HCatRecord newRec = new DefaultHCatRecord(inpRec.size()); HCatSchema hsch = HCatSchemaUtils.getHCatSchema( "a:tinyint,b:smallint,c:int,d:bigint,e:float,f:double,g:boolean,h:string,i:binary,j:string"); newRec.setByte("a", hsch, inpRec.getByte("a", hsch)); newRec.setShort("b", hsch, inpRec.getShort("b", hsch)); newRec.setInteger("c", hsch, inpRec.getInteger("c", hsch)); newRec.setLong("d", hsch, inpRec.getLong("d", hsch)); newRec.setFloat("e", hsch, inpRec.getFloat("e", hsch)); newRec.setDouble("f", hsch, inpRec.getDouble("f", hsch)); newRec.setBoolean("g", hsch, inpRec.getBoolean("g", hsch)); newRec.setString("h", hsch, inpRec.getString("h", hsch)); newRec.setByteArray("i", hsch, inpRec.getByteArray("i", hsch)); newRec.setString("j", hsch, inpRec.getString("j", hsch)); Assert.assertTrue(HCatDataCheckUtil.recordsEqual(newRec, inpRec)); }