1
0

[HUDI-1393] Add compaction action in archive command (#2246)

This commit is contained in:
hongdd
2020-11-23 16:53:01 +08:00
committed by GitHub
parent 537502a8ef
commit 971f028aaf

View File

@@ -30,6 +30,7 @@ import org.apache.hudi.common.table.log.HoodieLogFormat;
import org.apache.hudi.common.table.log.HoodieLogFormat.Reader; import org.apache.hudi.common.table.log.HoodieLogFormat.Reader;
import org.apache.hudi.common.table.log.block.HoodieAvroDataBlock; import org.apache.hudi.common.table.log.block.HoodieAvroDataBlock;
import org.apache.hudi.common.table.timeline.HoodieTimeline; import org.apache.hudi.common.table.timeline.HoodieTimeline;
import org.apache.hudi.common.util.Option;
import org.apache.avro.generic.GenericRecord; import org.apache.avro.generic.GenericRecord;
import org.apache.avro.generic.IndexedRecord; import org.apache.avro.generic.IndexedRecord;
@@ -172,49 +173,38 @@ public class ArchivedCommitsCommand implements CommandMarker {
return HoodiePrintHelper.print(header, new HashMap<>(), sortByField, descending, limit, headerOnly, allCommits); return HoodiePrintHelper.print(header, new HashMap<>(), sortByField, descending, limit, headerOnly, allCommits);
} }
private Comparable[] readCommit(GenericRecord record, boolean skipMetadata) { private Comparable[] commitDetail(GenericRecord record, String metadataName,
boolean skipMetadata) {
List<Object> commitDetails = new ArrayList<>(); List<Object> commitDetails = new ArrayList<>();
commitDetails.add(record.get("commitTime"));
commitDetails.add(record.get("actionType").toString());
if (!skipMetadata) {
commitDetails.add(Option.ofNullable(record.get(metadataName)).orElse("{}").toString());
}
return commitDetails.toArray(new Comparable[commitDetails.size()]);
}
private Comparable[] readCommit(GenericRecord record, boolean skipMetadata) {
try { try {
switch (record.get("actionType").toString()) { switch (record.get("actionType").toString()) {
case HoodieTimeline.CLEAN_ACTION: { case HoodieTimeline.CLEAN_ACTION:
commitDetails.add(record.get("commitTime")); return commitDetail(record, "hoodieCleanMetadata", skipMetadata);
commitDetails.add(record.get("actionType").toString());
if (!skipMetadata) {
commitDetails.add(record.get("hoodieCleanMetadata").toString());
}
break;
}
case HoodieTimeline.COMMIT_ACTION: case HoodieTimeline.COMMIT_ACTION:
case HoodieTimeline.DELTA_COMMIT_ACTION: { case HoodieTimeline.DELTA_COMMIT_ACTION:
commitDetails.add(record.get("commitTime")); return commitDetail(record, "hoodieCommitMetadata", skipMetadata);
commitDetails.add(record.get("actionType").toString()); case HoodieTimeline.ROLLBACK_ACTION:
if (!skipMetadata) { return commitDetail(record, "hoodieRollbackMetadata", skipMetadata);
commitDetails.add(record.get("hoodieCommitMetadata").toString()); case HoodieTimeline.SAVEPOINT_ACTION:
return commitDetail(record, "hoodieSavePointMetadata", skipMetadata);
case HoodieTimeline.COMPACTION_ACTION:
return commitDetail(record, "hoodieCompactionMetadata", skipMetadata);
default: {
return new Comparable[]{};
} }
break;
}
case HoodieTimeline.ROLLBACK_ACTION: {
commitDetails.add(record.get("commitTime"));
commitDetails.add(record.get("actionType").toString());
if (!skipMetadata) {
commitDetails.add(record.get("hoodieRollbackMetadata").toString());
}
break;
}
case HoodieTimeline.SAVEPOINT_ACTION: {
commitDetails.add(record.get("commitTime"));
commitDetails.add(record.get("actionType").toString());
if (!skipMetadata) {
commitDetails.add(record.get("hoodieSavePointMetadata").toString());
}
break;
}
default:
return commitDetails.toArray(new Comparable[commitDetails.size()]);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return new Comparable[]{};
} }
return commitDetails.toArray(new Comparable[commitDetails.size()]);
} }
} }