1
1
package org .radarcns ;
2
2
3
+ import com .fasterxml .jackson .annotation .JsonAutoDetect ;
4
+ import com .fasterxml .jackson .core .JsonFactory ;
5
+ import com .fasterxml .jackson .databind .ObjectMapper ;
6
+ import com .fasterxml .jackson .databind .ObjectWriter ;
3
7
import java .io .BufferedReader ;
4
8
import java .io .File ;
9
+ import java .io .FileOutputStream ;
5
10
import java .io .FileReader ;
6
11
import java .io .IOException ;
7
12
import java .text .SimpleDateFormat ;
8
13
import java .util .Date ;
9
14
import java .util .HashSet ;
10
15
import java .util .Set ;
11
16
import org .apache .avro .file .DataFileReader ;
17
+ import org .apache .avro .generic .GenericData ;
12
18
import org .apache .avro .generic .GenericDatumReader ;
19
+ import org .apache .avro .generic .GenericDatumWriter ;
13
20
import org .apache .avro .generic .GenericRecord ;
14
21
import org .apache .avro .io .DatumReader ;
22
+ import org .apache .avro .io .EncoderFactory ;
23
+ import org .apache .avro .io .JsonEncoder ;
15
24
import org .apache .avro .mapred .FsInput ;
16
25
import org .apache .commons .io .FilenameUtils ;
17
26
import org .apache .hadoop .conf .Configuration ;
@@ -38,6 +47,7 @@ public class RestructureAvroRecords {
38
47
39
48
private final Configuration conf = new Configuration ();
40
49
private final DatumReader <GenericRecord > datumReader ;
50
+ private final ObjectWriter writer ;
41
51
42
52
private int processedFileCount ;
43
53
private int processedRecordsCount ;
@@ -74,6 +84,16 @@ public RestructureAvroRecords(String inputPath, String outputPath) {
74
84
this .setInputWebHdfsURL (inputPath );
75
85
this .setOutputPath (outputPath );
76
86
datumReader = new GenericDatumReader <>();
87
+
88
+ ObjectMapper mapper = new ObjectMapper (new JsonFactory ());
89
+ // only serialize fields, not getters, etc.
90
+ mapper .setVisibility (mapper .getSerializationConfig ().getDefaultVisibilityChecker ()
91
+ .withFieldVisibility (JsonAutoDetect .Visibility .ANY )
92
+ .withGetterVisibility (JsonAutoDetect .Visibility .NONE )
93
+ .withIsGetterVisibility (JsonAutoDetect .Visibility .NONE )
94
+ .withSetterVisibility (JsonAutoDetect .Visibility .NONE )
95
+ .withCreatorVisibility (JsonAutoDetect .Visibility .NONE ));
96
+ writer = mapper .writer ();
77
97
}
78
98
79
99
public void setInputWebHdfsURL (String fileSystemURL ) {
@@ -172,7 +192,8 @@ record = dataFileReader.next(record);
172
192
processedFileCount ++;
173
193
}
174
194
175
- private void writeRecord (GenericRecord record , String topicName , FileCache cache ) throws IOException {
195
+ private void writeRecord (GenericRecord record , String topicName , FileCache cache )
196
+ throws IOException {
176
197
GenericRecord keyField = (GenericRecord ) record .get ("keyField" );
177
198
GenericRecord valueField = (GenericRecord ) record .get ("valueField" );
178
199
@@ -236,4 +257,6 @@ private void readSeenOffsets() {
236
257
logger .info ("Offsets file does not exist yet, will be created." );
237
258
}
238
259
}
260
+
261
+
239
262
}
0 commit comments