From 971f028aaf3e90ddee571e9862509d34a637782d Mon Sep 17 00:00:00 2001 From: hongdd Date: Mon, 23 Nov 2020 16:53:01 +0800 Subject: [PATCH] [HUDI-1393] Add compaction action in archive command (#2246) --- .../cli/commands/ArchivedCommitsCommand.java | 72 ++++++++----------- 1 file changed, 31 insertions(+), 41 deletions(-) diff --git a/hudi-cli/src/main/java/org/apache/hudi/cli/commands/ArchivedCommitsCommand.java b/hudi-cli/src/main/java/org/apache/hudi/cli/commands/ArchivedCommitsCommand.java index 1dc925b47..102fcc2ae 100644 --- a/hudi-cli/src/main/java/org/apache/hudi/cli/commands/ArchivedCommitsCommand.java +++ b/hudi-cli/src/main/java/org/apache/hudi/cli/commands/ArchivedCommitsCommand.java @@ -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.block.HoodieAvroDataBlock; 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.IndexedRecord; @@ -172,49 +173,38 @@ public class ArchivedCommitsCommand implements CommandMarker { 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 commitDetails = new ArrayList<>(); - try { - switch (record.get("actionType").toString()) { - case HoodieTimeline.CLEAN_ACTION: { - commitDetails.add(record.get("commitTime")); - commitDetails.add(record.get("actionType").toString()); - if (!skipMetadata) { - commitDetails.add(record.get("hoodieCleanMetadata").toString()); - } - break; - } - case HoodieTimeline.COMMIT_ACTION: - case HoodieTimeline.DELTA_COMMIT_ACTION: { - commitDetails.add(record.get("commitTime")); - commitDetails.add(record.get("actionType").toString()); - if (!skipMetadata) { - commitDetails.add(record.get("hoodieCommitMetadata").toString()); - } - 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) { - e.printStackTrace(); + 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 { + switch (record.get("actionType").toString()) { + case HoodieTimeline.CLEAN_ACTION: + return commitDetail(record, "hoodieCleanMetadata", skipMetadata); + case HoodieTimeline.COMMIT_ACTION: + case HoodieTimeline.DELTA_COMMIT_ACTION: + return commitDetail(record, "hoodieCommitMetadata", skipMetadata); + case HoodieTimeline.ROLLBACK_ACTION: + return commitDetail(record, "hoodieRollbackMetadata", skipMetadata); + case HoodieTimeline.SAVEPOINT_ACTION: + return commitDetail(record, "hoodieSavePointMetadata", skipMetadata); + case HoodieTimeline.COMPACTION_ACTION: + return commitDetail(record, "hoodieCompactionMetadata", skipMetadata); + default: { + return new Comparable[]{}; + } + } + } catch (Exception e) { + e.printStackTrace(); + return new Comparable[]{}; + } + } }