@@ -61,6 +61,15 @@ public class DataTranslator implements DataTranslatorContext
6161{
6262 protected DataTranslationOptions _dataTranslationOptions ;
6363
64+ public static void backFillMissingDeafultInDataMap (DataMap map , RecordDataSchema dataSchema ) {
65+ for (RecordDataSchema .Field field : dataSchema .getFields ()) {
66+ // System.out.println(field.getType()+ " " + field.getDefault());
67+ if (field .getDefault () != null && (!map .containsKey (field .getName ()) || map .get (field .getName ()) == null )) {
68+ map .put (field .getName (), field .getDefault ());
69+ }
70+ }
71+ }
72+
6473 /**
6574 * Convert the given {@link DataMap} conforming to the provided {@link RecordDataSchema} to a {@link GenericRecord}.
6675 *
@@ -74,6 +83,7 @@ public class DataTranslator implements DataTranslatorContext
7483 */
7584 public static GenericRecord dataMapToGenericRecord (DataMap map , RecordDataSchema dataSchema ) throws DataTranslationException
7685 {
86+ backFillMissingDeafultInDataMap (map , dataSchema );
7787 Schema avroSchema = SchemaTranslator .dataToAvroSchema (dataSchema );
7888 return dataMapToGenericRecord (map , dataSchema , avroSchema , null );
7989 }
@@ -94,6 +104,7 @@ public static GenericRecord dataMapToGenericRecord(DataMap map, RecordDataSchema
94104 DataMapToAvroRecordTranslationOptions options )
95105 throws DataTranslationException
96106 {
107+ backFillMissingDeafultInDataMap (map , dataSchema );
97108 Schema avroSchema = SchemaTranslator .dataToAvroSchema (dataSchema );
98109 return dataMapToGenericRecord (map , dataSchema , avroSchema , options );
99110 }
@@ -102,6 +113,7 @@ public static GenericRecord dataMapToGenericRecord(DataMap map, RecordDataSchema
102113 DataMapToAvroRecordTranslationOptions options )
103114 throws DataTranslationException
104115 {
116+ backFillMissingDeafultInDataMap (map , dataSchema );
105117 DataMapToGenericRecordTranslator translator = new DataMapToGenericRecordTranslator (options );
106118 try
107119 {
@@ -116,6 +128,7 @@ public static GenericRecord dataMapToGenericRecord(DataMap map, RecordDataSchema
116128
117129 public static <T extends SpecificRecordBase > T dataMapToSpecificRecord (DataMap map , RecordDataSchema dataSchema ,
118130 Schema avroSchema ) throws DataTranslationException {
131+ backFillMissingDeafultInDataMap (map , dataSchema );
119132 DataMapToSpecificRecordTranslator translator = new DataMapToSpecificRecordTranslator ();
120133 try {
121134 T avroRecord = translator .translate (map , dataSchema , avroSchema );
@@ -145,6 +158,7 @@ public static <T extends SpecificRecordBase> T dataMapToSpecificRecord(DataMap m
145158 */
146159 public static GenericRecord dataMapToGenericRecord (DataMap map , RecordDataSchema dataSchema , Schema avroSchema ) throws DataTranslationException
147160 {
161+ backFillMissingDeafultInDataMap (map , dataSchema );
148162 return dataMapToGenericRecord (map , dataSchema , avroSchema , null );
149163 }
150164
0 commit comments