1
0

[HUDI-908] Add some data types to HoodieTestDataGenerator and fix some some bugs. (#1690)

This commit is contained in:
Shen Hong
2020-06-22 23:13:28 +08:00
committed by GitHub
parent 68a656b016
commit 89e37d5273
8 changed files with 127 additions and 16 deletions

View File

@@ -30,6 +30,7 @@ import org.apache.avro.generic.GenericRecord;
import java.io.IOException;
import java.io.Serializable;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -236,7 +237,8 @@ public class MercifulJsonConverter {
return new JsonToAvroFieldProcessor() {
@Override
public Pair<Boolean, Object> convert(Object value, String name, Schema schema) {
return Pair.of(true, value.toString().getBytes());
// Should return ByteBuffer (see GenericData.isBytes())
return Pair.of(true, ByteBuffer.wrap(value.toString().getBytes()));
}
};
}
@@ -245,10 +247,16 @@ public class MercifulJsonConverter {
return new JsonToAvroFieldProcessor() {
@Override
public Pair<Boolean, Object> convert(Object value, String name, Schema schema) {
byte[] src = value.toString().getBytes();
// The ObjectMapper use List to represent FixedType
// eg: "decimal_val": [0, 0, 14, -63, -52] will convert to ArrayList<Integer>
List<Integer> converval = (List<Integer>) value;
byte[] src = new byte[converval.size()];
for (int i = 0; i < converval.size(); i++) {
src[i] = converval.get(i).byteValue();
}
byte[] dst = new byte[schema.getFixedSize()];
System.arraycopy(src, 0, dst, 0, Math.min(schema.getFixedSize(), src.length));
return Pair.of(true, dst);
return Pair.of(true, new GenericData.Fixed(schema, dst));
}
};
}