Skip to content

Commit 94af009

Browse files
HIVE-29536: ACID Compaction: Improve the rebalance compaction tests in TestCrudCompactorOnTez (apache#6487)
Co-authored-by: Zsolt Miskolczi <zsmiskolczi@cloudera.com>
1 parent ccc7035 commit 94af009

3 files changed

Lines changed: 691 additions & 487 deletions

File tree

itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorOnTezTest.java

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
*/
1818
package org.apache.hadoop.hive.ql.txn.compactor;
1919

20+
import com.fasterxml.jackson.core.JsonProcessingException;
21+
import com.fasterxml.jackson.databind.JsonNode;
22+
import com.fasterxml.jackson.databind.ObjectMapper;
2023
import org.apache.hadoop.fs.FileUtil;
2124
import org.apache.hadoop.hive.cli.CliSessionState;
2225
import org.apache.hadoop.hive.conf.Constants;
@@ -48,6 +51,8 @@
4851

4952
import java.io.File;
5053
import java.io.IOException;
54+
import java.util.ArrayList;
55+
import java.util.Arrays;
5156
import java.util.Collections;
5257
import java.util.List;
5358
import java.util.Map;
@@ -58,8 +63,8 @@
5863

5964
import static org.apache.hadoop.hive.conf.HiveConf.ConfVars.HIVE_COMPACTOR_CLEANER_RETENTION_TIME;
6065
import static org.apache.hadoop.hive.ql.txn.compactor.CompactorTestUtil.executeStatementOnDriverAndReturnResults;
61-
import static org.apache.hadoop.hive.ql.txn.compactor.TestCompactor.executeStatementOnDriver;
6266
import static org.apache.hadoop.hive.ql.txn.compactor.TestCompactor.dropTables;
67+
import static org.apache.hadoop.hive.ql.txn.compactor.TestCompactor.executeStatementOnDriver;
6368

6469
/**
6570
* Superclass for Test[Crud|Mm]CompactorOnTez, for setup and helper classes.
@@ -184,7 +189,8 @@ protected void verifySuccessfulCompaction(int expectedSuccessfulCompactions) thr
184189
protected HiveHookEvents.HiveHookEventProto getRelatedTezEvent(String dbTableName) throws Exception {
185190
int retryCount = 3;
186191
while (retryCount-- > 0) {
187-
List<ProtoMessageReader<HiveHookEvents.HiveHookEventProto>> readers = TestHiveProtoLoggingHook.getTestReader(conf, tmpFolder);
192+
List<ProtoMessageReader<HiveHookEvents.HiveHookEventProto>>
193+
readers = TestHiveProtoLoggingHook.getTestReader(conf, tmpFolder);
188194
for (ProtoMessageReader<HiveHookEvents.HiveHookEventProto> reader : readers) {
189195
do {
190196
HiveHookEvents.HiveHookEventProto event;
@@ -541,9 +547,40 @@ protected List<String> getBucketData(String tblName, String bucketId) throws Exc
541547
"select ROW__ID, * from " + tblName + " where ROW__ID.bucketid = " + bucketId + " order by ROW__ID, a, b", driver);
542548
}
543549

550+
protected List<RowInfo> getStructuredBucketData(String tblName, String bucketId) throws Exception {
551+
List<String> getBucketData = getBucketData(tblName, bucketId);
552+
553+
List<RowInfo> result = new ArrayList<>(getBucketData.size());
554+
for (String row : getBucketData) {
555+
result.add(RowInfo.fromRawString(row));
556+
}
557+
558+
return result;
559+
}
560+
544561
protected void dropTable(String tblName) throws Exception {
545562
executeStatementOnDriver("drop table " + tblName, driver);
546563
}
564+
565+
protected record RowInfo(long writeId, long bucketId, long rowId, TestRebalanceCompactor.RowData rowData) {
566+
private static final ObjectMapper MAPPER = new ObjectMapper();
567+
568+
static RowInfo fromRawString(String row) throws JsonProcessingException {
569+
// Example row data to parse: "{\"writeid\":7,\"bucketid\":537001984,\"rowid\":10}\t5\t4",
570+
571+
String[] parts = row.split("\t");
572+
573+
JsonNode json = MAPPER.readTree(parts[0]);
574+
575+
return new RowInfo(
576+
json.get("writeid").asLong(),
577+
json.get("bucketid").asLong(),
578+
json.get("rowid").asLong(),
579+
580+
new TestRebalanceCompactor.RowData(Arrays.copyOfRange(parts, 1, parts.length))
581+
);
582+
}
583+
}
547584
}
548585

549586
protected Initiator createInitiator() throws Exception {

0 commit comments

Comments
 (0)