@@ -61,6 +61,15 @@ public class DataTranslator implements DataTranslatorContext
61
61
{
62
62
protected DataTranslationOptions _dataTranslationOptions ;
63
63
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
+
64
73
/**
65
74
* Convert the given {@link DataMap} conforming to the provided {@link RecordDataSchema} to a {@link GenericRecord}.
66
75
*
@@ -74,6 +83,7 @@ public class DataTranslator implements DataTranslatorContext
74
83
*/
75
84
public static GenericRecord dataMapToGenericRecord (DataMap map , RecordDataSchema dataSchema ) throws DataTranslationException
76
85
{
86
+ backFillMissingDeafultInDataMap (map , dataSchema );
77
87
Schema avroSchema = SchemaTranslator .dataToAvroSchema (dataSchema );
78
88
return dataMapToGenericRecord (map , dataSchema , avroSchema , null );
79
89
}
@@ -94,6 +104,7 @@ public static GenericRecord dataMapToGenericRecord(DataMap map, RecordDataSchema
94
104
DataMapToAvroRecordTranslationOptions options )
95
105
throws DataTranslationException
96
106
{
107
+ backFillMissingDeafultInDataMap (map , dataSchema );
97
108
Schema avroSchema = SchemaTranslator .dataToAvroSchema (dataSchema );
98
109
return dataMapToGenericRecord (map , dataSchema , avroSchema , options );
99
110
}
@@ -102,6 +113,7 @@ public static GenericRecord dataMapToGenericRecord(DataMap map, RecordDataSchema
102
113
DataMapToAvroRecordTranslationOptions options )
103
114
throws DataTranslationException
104
115
{
116
+ backFillMissingDeafultInDataMap (map , dataSchema );
105
117
DataMapToGenericRecordTranslator translator = new DataMapToGenericRecordTranslator (options );
106
118
try
107
119
{
@@ -116,6 +128,7 @@ public static GenericRecord dataMapToGenericRecord(DataMap map, RecordDataSchema
116
128
117
129
public static <T extends SpecificRecordBase > T dataMapToSpecificRecord (DataMap map , RecordDataSchema dataSchema ,
118
130
Schema avroSchema ) throws DataTranslationException {
131
+ backFillMissingDeafultInDataMap (map , dataSchema );
119
132
DataMapToSpecificRecordTranslator translator = new DataMapToSpecificRecordTranslator ();
120
133
try {
121
134
T avroRecord = translator .translate (map , dataSchema , avroSchema );
@@ -145,6 +158,7 @@ public static <T extends SpecificRecordBase> T dataMapToSpecificRecord(DataMap m
145
158
*/
146
159
public static GenericRecord dataMapToGenericRecord (DataMap map , RecordDataSchema dataSchema , Schema avroSchema ) throws DataTranslationException
147
160
{
161
+ backFillMissingDeafultInDataMap (map , dataSchema );
148
162
return dataMapToGenericRecord (map , dataSchema , avroSchema , null );
149
163
}
150
164
0 commit comments