1
0

HUDI-170 Updating hoodie record before inserting it into ExternalSpillableMap (#866)

This commit is contained in:
Balaji Varadarajan
2019-08-30 09:03:37 -07:00
committed by vinoth chandar
parent 40dd4dd637
commit a6908ef44d
2 changed files with 22 additions and 3 deletions

View File

@@ -207,9 +207,10 @@ public class HoodieMergeHandle<T extends HoodieRecordPayload> extends HoodieWrit
while (newRecordsItr.hasNext()) {
HoodieRecord<T> record = newRecordsItr.next();
partitionPath = record.getPartitionPath();
keyToNewRecords.put(record.getRecordKey(), record);
// update the new location of the record, so we know where to find it next
record.setNewLocation(new HoodieRecordLocation(instantTime, fileId));
//NOTE: Once Records are added to map (spillable-map), DO NOT change it as they won't persist
keyToNewRecords.put(record.getRecordKey(), record);
}
logger.info("Number of entries in MemoryBasedMap => "
+ ((ExternalSpillableMap) keyToNewRecords).getInMemoryMapNumEntries()

View File

@@ -333,7 +333,13 @@ public class TestHoodieMergeHandle {
// handling
Assert.assertEquals((long) statuses.stream()
.map(status -> status.getStat().getNumInserts()).reduce((a,b) -> a + b).get(), 100);
// Verify all records have location set
statuses.forEach(writeStatus -> {
writeStatus.getWrittenRecords().forEach(r -> {
// Ensure New Location is set
Assert.assertTrue(r.getNewLocation().isPresent());
});
});
}
private Dataset<Row> getRecords() {
@@ -366,6 +372,18 @@ public class TestHoodieMergeHandle {
.withStorageConfig(HoodieStorageConfig.newBuilder().limitFileSize(1024 * 1024).build())
.forTable("test-trip-table")
.withIndexConfig(HoodieIndexConfig.newBuilder().withIndexType(HoodieIndex.IndexType.BLOOM).build())
.withBulkInsertParallelism(2);
.withBulkInsertParallelism(2)
.withWriteStatusClass(TestWriteStatus.class);
}
/**
* Overridden so that we can capture and inspect all success records
*/
public static class TestWriteStatus extends WriteStatus {
public TestWriteStatus(Boolean trackSuccessRecords, Double failureFraction) {
// Track Success Records
super(true, failureFraction);
}
}
}