org.apache.avro.io.DatumWriter Java Examples
The following examples show how to use
org.apache.avro.io.DatumWriter.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source Project: localization_nifi Author: wangrenlei File: JsonUtils.java License: Apache License 2.0 | 8 votes |
/** * Writes provided {@link GenericRecord} into the provided * {@link OutputStream} as JSON. */ public static void write(GenericRecord record, OutputStream out) { try { DatumWriter<GenericRecord> writer = new GenericDatumWriter<GenericRecord>(record.getSchema()); JsonEncoder encoder = EncoderFactory.get().jsonEncoder(record.getSchema(), out); writer.write(record, encoder); encoder.flush(); } catch (Exception e) { throw new IllegalStateException("Failed to read GenericRecord", e); } }
Example #2
Source Project: localization_nifi Author: wangrenlei File: TestConvertAvroToJSON.java License: Apache License 2.0 | 7 votes |
@Test public void testSingleAvroMessage() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ConvertAvroToJSON()); final Schema schema = new Schema.Parser().parse(new File("src/test/resources/user.avsc")); final GenericRecord user1 = new GenericData.Record(schema); user1.put("name", "Alyssa"); user1.put("favorite_number", 256); final DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(schema); final ByteArrayOutputStream out1 = AvroTestUtil.serializeAvroRecord(schema, datumWriter, user1); runner.enqueue(out1.toByteArray()); runner.run(); runner.assertAllFlowFilesTransferred(ConvertAvroToJSON.REL_SUCCESS, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertAvroToJSON.REL_SUCCESS).get(0); out.assertContentEquals("{\"name\": \"Alyssa\", \"favorite_number\": 256, \"favorite_color\": null}"); }
Example #3
Source Project: Flink-CEPplus Author: ljygz File: AvroKeyValueSinkWriter.java License: Apache License 2.0 | 6 votes |
AvroKeyValueWriter(Schema keySchema, Schema valueSchema, CodecFactory compressionCodec, OutputStream outputStream, int syncInterval) throws IOException { // Create the generic record schema for the key/value pair. mKeyValuePairSchema = AvroKeyValue .getSchema(keySchema, valueSchema); // Create an Avro container file and a writer to it. DatumWriter<GenericRecord> genericDatumWriter = new GenericDatumWriter<GenericRecord>( mKeyValuePairSchema); mAvroFileWriter = new DataFileWriter<GenericRecord>( genericDatumWriter); mAvroFileWriter.setCodec(compressionCodec); mAvroFileWriter.setSyncInterval(syncInterval); mAvroFileWriter.create(mKeyValuePairSchema, outputStream); // Create a reusable output record. mOutputRecord = new AvroKeyValue<Object, Object>( new GenericData.Record(mKeyValuePairSchema)); }
Example #4
Source Project: schema-registry-transfer-smt Author: OneCricketeer File: TransformTest.java License: Apache License 2.0 | 6 votes |
private ByteArrayOutputStream encodeAvroObject(org.apache.avro.Schema schema, int sourceId, Object datum) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); out.write(MAGIC_BYTE); out.write(ByteBuffer.allocate(ID_SIZE).putInt(sourceId).array()); EncoderFactory encoderFactory = EncoderFactory.get(); BinaryEncoder encoder = encoderFactory.directBinaryEncoder(out, null); Object value = datum instanceof NonRecordContainer ? ((NonRecordContainer) datum).getValue() : datum; DatumWriter<Object> writer = new GenericDatumWriter<>(schema); writer.write(value, encoder); encoder.flush(); return out; }
Example #5
Source Project: flink Author: flink-tpc-ds File: AvroKeyValueSinkWriter.java License: Apache License 2.0 | 6 votes |
AvroKeyValueWriter(Schema keySchema, Schema valueSchema, CodecFactory compressionCodec, OutputStream outputStream, int syncInterval) throws IOException { // Create the generic record schema for the key/value pair. mKeyValuePairSchema = AvroKeyValue .getSchema(keySchema, valueSchema); // Create an Avro container file and a writer to it. DatumWriter<GenericRecord> genericDatumWriter = new GenericDatumWriter<GenericRecord>( mKeyValuePairSchema); mAvroFileWriter = new DataFileWriter<GenericRecord>( genericDatumWriter); mAvroFileWriter.setCodec(compressionCodec); mAvroFileWriter.setSyncInterval(syncInterval); mAvroFileWriter.create(mKeyValuePairSchema, outputStream); // Create a reusable output record. mOutputRecord = new AvroKeyValue<Object, Object>( new GenericData.Record(mKeyValuePairSchema)); }
Example #6
Source Project: iceberg Author: apache File: TestAvroNameMapping.java License: Apache License 2.0 | 6 votes |
private Record writeAndRead(Schema writeSchema, Schema readSchema, Record record, NameMapping nameMapping) throws IOException { File file = temp.newFile(); // Write without file ids org.apache.avro.Schema writeAvroSchema = RemoveIds.removeIds(writeSchema); DatumWriter<Record> datumWriter = new GenericDatumWriter<>(writeAvroSchema); try (DataFileWriter<Record> dataFileWriter = new DataFileWriter<>(datumWriter)) { dataFileWriter.create(writeAvroSchema, file); dataFileWriter.append(record); } Iterable<GenericData.Record> records = Avro.read(Files.localInput(file)) .project(readSchema) .withNameMapping(nameMapping) .build(); return Iterables.getOnlyElement(records); }
Example #7
Source Project: localization_nifi Author: wangrenlei File: TestExtractAvroMetadata.java License: Apache License 2.0 | 6 votes |
@Test public void testExtractionWithCodec() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ExtractAvroMetadata()); runner.setProperty(ExtractAvroMetadata.METADATA_KEYS, AVRO_CODEC_ATTR); // test dynamic attribute avro.codec final Schema schema = new Schema.Parser().parse(new File("src/test/resources/array.avsc")); final GenericData.Array<String> data = new GenericData.Array<>(schema, Arrays.asList("one", "two", "three")); final DatumWriter<GenericData.Array<String>> datumWriter = new GenericDatumWriter<>(schema); final ByteArrayOutputStream out = new ByteArrayOutputStream(); final DataFileWriter<GenericData.Array<String>> dataFileWriter = new DataFileWriter<>(datumWriter); dataFileWriter.setCodec(CodecFactory.deflateCodec(1)); dataFileWriter.create(schema, out); dataFileWriter.append(data); dataFileWriter.close(); runner.enqueue(out.toByteArray()); runner.run(); runner.assertAllFlowFilesTransferred(ExtractAvroMetadata.REL_SUCCESS, 1); final MockFlowFile flowFile = runner.getFlowFilesForRelationship(ExtractAvroMetadata.REL_SUCCESS).get(0); flowFile.assertAttributeEquals("avro.codec", "deflate"); }
Example #8
Source Project: localization_nifi Author: wangrenlei File: TestConvertAvroToJSON.java License: Apache License 2.0 | 6 votes |
@Test public void testSingleAvroMessage_noContainer() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ConvertAvroToJSON()); runner.setProperty(ConvertAvroToJSON.CONTAINER_OPTIONS, ConvertAvroToJSON.CONTAINER_NONE); final Schema schema = new Schema.Parser().parse(new File("src/test/resources/user.avsc")); final GenericRecord user1 = new GenericData.Record(schema); user1.put("name", "Alyssa"); user1.put("favorite_number", 256); final DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(schema); final ByteArrayOutputStream out1 = AvroTestUtil.serializeAvroRecord(schema, datumWriter, user1); runner.enqueue(out1.toByteArray()); runner.run(); runner.assertAllFlowFilesTransferred(ConvertAvroToJSON.REL_SUCCESS, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertAvroToJSON.REL_SUCCESS).get(0); out.assertContentEquals("{\"name\": \"Alyssa\", \"favorite_number\": 256, \"favorite_color\": null}"); }
Example #9
Source Project: localization_nifi Author: wangrenlei File: TestConvertAvroToJSON.java License: Apache License 2.0 | 6 votes |
@Test public void testSingleAvroMessage_wrapSingleMessage() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ConvertAvroToJSON()); runner.setProperty(ConvertAvroToJSON.CONTAINER_OPTIONS, ConvertAvroToJSON.CONTAINER_ARRAY); runner.setProperty(ConvertAvroToJSON.WRAP_SINGLE_RECORD, Boolean.toString(true)); final Schema schema = new Schema.Parser().parse(new File("src/test/resources/user.avsc")); final GenericRecord user1 = new GenericData.Record(schema); user1.put("name", "Alyssa"); user1.put("favorite_number", 256); final DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(schema); final ByteArrayOutputStream out1 = AvroTestUtil.serializeAvroRecord(schema, datumWriter, user1); runner.enqueue(out1.toByteArray()); runner.run(); runner.assertAllFlowFilesTransferred(ConvertAvroToJSON.REL_SUCCESS, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertAvroToJSON.REL_SUCCESS).get(0); out.assertContentEquals("[{\"name\": \"Alyssa\", \"favorite_number\": 256, \"favorite_color\": null}]"); }
Example #10
Source Project: localization_nifi Author: wangrenlei File: TestConvertAvroToJSON.java License: Apache License 2.0 | 6 votes |
@Test public void testSingleAvroMessage_wrapSingleMessage_noContainer() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ConvertAvroToJSON()); // Verify we do not wrap output for a single record if not configured to use a container runner.setProperty(ConvertAvroToJSON.CONTAINER_OPTIONS, ConvertAvroToJSON.CONTAINER_NONE); runner.setProperty(ConvertAvroToJSON.WRAP_SINGLE_RECORD, Boolean.toString(true)); final Schema schema = new Schema.Parser().parse(new File("src/test/resources/user.avsc")); final GenericRecord user1 = new GenericData.Record(schema); user1.put("name", "Alyssa"); user1.put("favorite_number", 256); final DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(schema); final ByteArrayOutputStream out1 = AvroTestUtil.serializeAvroRecord(schema, datumWriter, user1); runner.enqueue(out1.toByteArray()); runner.run(); runner.assertAllFlowFilesTransferred(ConvertAvroToJSON.REL_SUCCESS, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertAvroToJSON.REL_SUCCESS).get(0); out.assertContentEquals("{\"name\": \"Alyssa\", \"favorite_number\": 256, \"favorite_color\": null}"); }
Example #11
Source Project: localization_nifi Author: wangrenlei File: TestConvertAvroToJSON.java License: Apache License 2.0 | 6 votes |
@Test public void testMultipleAvroMessages() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ConvertAvroToJSON()); final Schema schema = new Schema.Parser().parse(new File("src/test/resources/user.avsc")); runner.setProperty(ConvertAvroToJSON.CONTAINER_OPTIONS, ConvertAvroToJSON.CONTAINER_ARRAY); final GenericRecord user1 = new GenericData.Record(schema); user1.put("name", "Alyssa"); user1.put("favorite_number", 256); final GenericRecord user2 = new GenericData.Record(schema); user2.put("name", "George"); user2.put("favorite_number", 1024); user2.put("favorite_color", "red"); final DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(schema); final ByteArrayOutputStream out1 = AvroTestUtil.serializeAvroRecord(schema, datumWriter, user1, user2); runner.enqueue(out1.toByteArray()); runner.run(); runner.assertAllFlowFilesTransferred(ConvertAvroToJSON.REL_SUCCESS, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertAvroToJSON.REL_SUCCESS).get(0); out.assertContentEquals("[{\"name\": \"Alyssa\", \"favorite_number\": 256, \"favorite_color\": null},{\"name\": \"George\", \"favorite_number\": 1024, \"favorite_color\": \"red\"}]"); }
Example #12
Source Project: localization_nifi Author: wangrenlei File: TestConvertAvroToJSON.java License: Apache License 2.0 | 6 votes |
@Test public void testMultipleAvroMessagesContainerNone() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ConvertAvroToJSON()); final Schema schema = new Schema.Parser().parse(new File("src/test/resources/user.avsc")); runner.setProperty(ConvertAvroToJSON.CONTAINER_OPTIONS, ConvertAvroToJSON.CONTAINER_NONE); final GenericRecord user1 = new GenericData.Record(schema); user1.put("name", "Alyssa"); user1.put("favorite_number", 256); final GenericRecord user2 = new GenericData.Record(schema); user2.put("name", "George"); user2.put("favorite_number", 1024); user2.put("favorite_color", "red"); final DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(schema); final ByteArrayOutputStream out1 = serializeAvroRecord(schema, datumWriter, user1, user2); runner.enqueue(out1.toByteArray()); runner.run(); runner.assertAllFlowFilesTransferred(ConvertAvroToJSON.REL_SUCCESS, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertAvroToJSON.REL_SUCCESS).get(0); out.assertContentEquals("{\"name\": \"Alyssa\", \"favorite_number\": 256, \"favorite_color\": null}\n{\"name\": \"George\", \"favorite_number\": 1024, \"favorite_color\": \"red\"}"); }
Example #13
Source Project: localization_nifi Author: wangrenlei File: TestConvertAvroToJSON.java License: Apache License 2.0 | 6 votes |
@Test public void testZeroRecords() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ConvertAvroToJSON()); final Schema schema = new Schema.Parser().parse(new File("src/test/resources/user.avsc")); final DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(schema); final ByteArrayOutputStream out1 = serializeAvroRecord(schema, datumWriter); runner.enqueue(out1.toByteArray()); runner.run(); runner.assertAllFlowFilesTransferred(ConvertAvroToJSON.REL_SUCCESS, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertAvroToJSON.REL_SUCCESS).get(0); out.assertContentEquals("{}"); }
Example #14
Source Project: pulsar Author: apache File: AvroSerializationSchema.java License: Apache License 2.0 | 6 votes |
@Override public byte[] serialize(T t) { if (null == t) { return null; } // Writer to serialize Avro record into a byte array. DatumWriter<T> writer = new SpecificDatumWriter<>(t.getSchema()); // Output stream to serialize records into byte array. ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); // Low-level class for serialization of Avro values. Encoder encoder = EncoderFactory.get().binaryEncoder(arrayOutputStream, null); arrayOutputStream.reset(); try { writer.write(t, encoder); encoder.flush(); } catch (IOException e) { throw new RuntimeException("Error while serializing the record to Avro", e); } return arrayOutputStream.toByteArray(); }
Example #15
Source Project: pxf Author: greenplum-db File: Hdfs.java License: Apache License 2.0 | 6 votes |
@Override public void writeAvroFile(String pathToFile, String schemaName, String codecName, IAvroSchema[] data) throws Exception { Path path = getDatapath(pathToFile); OutputStream outStream = fs.create(path, true, bufferSize, replicationSize, blockSize); Schema schema = new Schema.Parser().parse(new FileInputStream( schemaName)); DatumWriter<GenericRecord> writer = new GenericDatumWriter<>( schema); DataFileWriter<GenericRecord> dataFileWriter = new DataFileWriter<>( writer); if (!StringUtils.isEmpty(codecName)) { dataFileWriter.setCodec(CodecFactory.fromString(codecName)); } dataFileWriter.create(schema, outStream); for (IAvroSchema iAvroSchema : data) { GenericRecord datum = iAvroSchema.serialize(); dataFileWriter.append(datum); } dataFileWriter.close(); }
Example #16
Source Project: kafka-connect-fs Author: mmolimar File: AvroFileReaderTest.java License: Apache License 2.0 | 6 votes |
@Override protected Path createDataFile(ReaderFsTestConfig fsConfig, Object... args) throws IOException { File avroFile = File.createTempFile("test-", "." + getFileExtension()); DatumWriter<GenericRecord> writer = new GenericDatumWriter<>(schema); try (DataFileWriter<GenericRecord> dataFileWriter = new DataFileWriter<>(writer)) { dataFileWriter.setFlushOnEveryBlock(true); dataFileWriter.setSyncInterval(32); dataFileWriter.create(schema, avroFile); IntStream.range(0, NUM_RECORDS).forEach(index -> { GenericRecord datum = new GenericData.Record(schema); datum.put(FIELD_INDEX, index); datum.put(FIELD_NAME, String.format("%d_name_%s", index, UUID.randomUUID())); datum.put(FIELD_SURNAME, String.format("%d_surname_%s", index, UUID.randomUUID())); try { fsConfig.offsetsByIndex().put(index, dataFileWriter.sync() - 16L); dataFileWriter.append(datum); } catch (IOException ioe) { throw new RuntimeException(ioe); } }); } Path path = new Path(new Path(fsConfig.getFsUri()), avroFile.getName()); fsConfig.getFs().moveFromLocalFile(new Path(avroFile.getAbsolutePath()), path); return path; }
Example #17
Source Project: iceberg Author: Netflix File: AvroFileAppender.java License: Apache License 2.0 | 6 votes |
@SuppressWarnings("unchecked") private static <D> DataFileWriter<D> newAvroWriter( Schema schema, OutputFile file, Function<Schema, DatumWriter<?>> createWriterFunc, CodecFactory codec, Map<String, String> metadata) throws IOException { DataFileWriter<D> writer = new DataFileWriter<>( (DatumWriter<D>) createWriterFunc.apply(schema)); writer.setCodec(codec); for (Map.Entry<String, String> entry : metadata.entrySet()) { writer.setMeta(entry.getKey(), entry.getValue()); } // TODO: support overwrite return writer.create(schema, file.create()); }
Example #18
Source Project: flume-elasticsearch-sink Author: cognitree File: TestAvroSerializer.java License: Apache License 2.0 | 6 votes |
/** * tests Avro Serializer */ @Test public void testSerializer() throws Exception { Context context = new Context(); String schemaFile = getClass().getResource("/schema.avsc").getFile(); context.put(ES_AVRO_SCHEMA_FILE, schemaFile); avroSerializer.configure(context); Schema schema = new Schema.Parser().parse(new File(schemaFile)); GenericRecord user = generateGenericRecord(schema); DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(schema); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); Encoder encoder = new EncoderFactory().binaryEncoder(outputStream, null); datumWriter.write(user, encoder); encoder.flush(); Event event = EventBuilder.withBody(outputStream.toByteArray()); XContentBuilder expected = generateContentBuilder(); XContentBuilder actual = avroSerializer.serialize(event); JsonParser parser = new JsonParser(); assertEquals(parser.parse(Strings.toString(expected)), parser.parse(Strings.toString(actual))); }
Example #19
Source Project: jMetalSP Author: jMetal File: DataSerializer.java License: MIT License | 6 votes |
public byte[] serializeMessage(S clazz, String path) { byte[] result = null; try { File file = new File(path); Schema schema = new Schema.Parser().parse(file); ByteArrayOutputStream out = new ByteArrayOutputStream(); BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(out, null); DatumWriter<S> dataFileWriter = new SpecificDatumWriter<S>(schema); dataFileWriter.write(clazz, encoder); encoder.flush(); result=out.toByteArray(); out.close(); }catch (Exception ex){ ex.printStackTrace(); } return result; }
Example #20
Source Project: apicurio-registry Author: Apicurio File: DefaultAvroDatumProvider.java License: Apache License 2.0 | 5 votes |
@Override public DatumWriter<T> createDatumWriter(T data, Schema schema) { if (data instanceof SpecificRecord) { return new SpecificDatumWriter<>(schema); } else { return new GenericDatumWriter<>(schema); } }
Example #21
Source Project: apicurio-registry Author: Apicurio File: AvroKafkaSerializer.java License: Apache License 2.0 | 5 votes |
@Override protected void serializeData(Schema schema, U data, OutputStream out) throws IOException { BinaryEncoder encoder = encoderFactory.directBinaryEncoder(out, null); // I guess this can happen if generics are lost with reflection ... if (data instanceof NonRecordContainer) { //noinspection unchecked data = (U) NonRecordContainer.class.cast(data).getValue(); } DatumWriter<U> writer = avroDatumProvider.createDatumWriter(data, schema); writer.write(data, encoder); encoder.flush(); }
Example #22
Source Project: data-highway Author: HotelsDotCom File: TruckParkAppIntegrationTest.java License: Apache License 2.0 | 5 votes |
@Override public byte[] serialize(String topic, Record record) { try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { baos.write(DataDeserializer.MAGIC_BYTE); baos.write(Ints.toByteArray(VERSION)); DatumWriter<Object> writer = new GenericDatumWriter<>(SCHEMA); BinaryEncoder encoder = EncoderFactory.get().directBinaryEncoder(baos, null); writer.write(record, encoder); encoder.flush(); return baos.toByteArray(); } catch (IOException unreachable) { throw new RuntimeException(unreachable); } }
Example #23
Source Project: data-highway Author: HotelsDotCom File: DataDeserializerGdprTest.java License: Apache License 2.0 | 5 votes |
private byte[] toAvroBinary(Schema schema, Object value, int version) { try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { baos.write(0x0); baos.write(Ints.toByteArray(version)); DatumWriter<Object> writer = new GenericDatumWriter<>(schema); Encoder encoder = EncoderFactory.get().directBinaryEncoder(baos, null); writer.write(value, encoder); encoder.flush(); return baos.toByteArray(); } catch (IOException e) { throw new RuntimeException(e); } }
Example #24
Source Project: data-highway Author: HotelsDotCom File: DataDeserializerTest.java License: Apache License 2.0 | 5 votes |
private byte[] toAvroBinary(Schema schema, Object value, int version) { try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { baos.write(0x0); baos.write(Ints.toByteArray(version)); DatumWriter<Object> writer = new GenericDatumWriter<>(schema); Encoder encoder = EncoderFactory.get().directBinaryEncoder(baos, null); writer.write(value, encoder); encoder.flush(); return baos.toByteArray(); } catch (IOException e) { throw new RuntimeException(e); } }
Example #25
Source Project: data-highway Author: HotelsDotCom File: OfframpIntegrationTest.java License: Apache License 2.0 | 5 votes |
private static byte[] encode(Record record) throws IOException { try (ByteArrayOutputStream buffer = new ByteArrayOutputStream()) { Encoder encoder = EncoderFactory.get().directBinaryEncoder(buffer, null); DatumWriter<Object> writer = new GenericDatumWriter<>(record.getSchema()); buffer.write(0x00); buffer.write(Ints.toByteArray(1)); writer.write(record, encoder); encoder.flush(); return buffer.toByteArray(); } }
Example #26
Source Project: Flink-CEPplus Author: ljygz File: AvroFactory.java License: Apache License 2.0 | 5 votes |
private AvroFactory( GenericData avroData, Schema schema, DatumReader<T> reader, DatumWriter<T> writer) { this.avroData = checkNotNull(avroData); this.schema = checkNotNull(schema); this.writer = checkNotNull(writer); this.reader = checkNotNull(reader); }
Example #27
Source Project: Flink-CEPplus Author: ljygz File: AvroOutputFormat.java License: Apache License 2.0 | 5 votes |
@Override public void open(int taskNumber, int numTasks) throws IOException { super.open(taskNumber, numTasks); DatumWriter<E> datumWriter; Schema schema; if (org.apache.avro.specific.SpecificRecordBase.class.isAssignableFrom(avroValueType)) { datumWriter = new SpecificDatumWriter<E>(avroValueType); try { schema = ((org.apache.avro.specific.SpecificRecordBase) avroValueType.newInstance()).getSchema(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException(e.getMessage()); } } else if (org.apache.avro.generic.GenericRecord.class.isAssignableFrom(avroValueType)) { if (userDefinedSchema == null) { throw new IllegalStateException("Schema must be set when using Generic Record"); } datumWriter = new GenericDatumWriter<E>(userDefinedSchema); schema = userDefinedSchema; } else { datumWriter = new ReflectDatumWriter<E>(avroValueType); schema = ReflectData.get().getSchema(avroValueType); } dataFileWriter = new DataFileWriter<E>(datumWriter); if (codec != null) { dataFileWriter.setCodec(codec.getCodecFactory()); } if (userDefinedSchema == null) { dataFileWriter.create(schema, stream); } else { dataFileWriter.create(userDefinedSchema, stream); } }
Example #28
Source Project: flink Author: flink-tpc-ds File: AvroFactory.java License: Apache License 2.0 | 5 votes |
private AvroFactory( GenericData avroData, Schema schema, DatumReader<T> reader, DatumWriter<T> writer) { this.avroData = checkNotNull(avroData); this.schema = checkNotNull(schema); this.writer = checkNotNull(writer); this.reader = checkNotNull(reader); }
Example #29
Source Project: flink Author: flink-tpc-ds File: AvroOutputFormat.java License: Apache License 2.0 | 5 votes |
@Override public void open(int taskNumber, int numTasks) throws IOException { super.open(taskNumber, numTasks); DatumWriter<E> datumWriter; Schema schema; if (org.apache.avro.specific.SpecificRecordBase.class.isAssignableFrom(avroValueType)) { datumWriter = new SpecificDatumWriter<E>(avroValueType); try { schema = ((org.apache.avro.specific.SpecificRecordBase) avroValueType.newInstance()).getSchema(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException(e.getMessage()); } } else if (org.apache.avro.generic.GenericRecord.class.isAssignableFrom(avroValueType)) { if (userDefinedSchema == null) { throw new IllegalStateException("Schema must be set when using Generic Record"); } datumWriter = new GenericDatumWriter<E>(userDefinedSchema); schema = userDefinedSchema; } else { datumWriter = new ReflectDatumWriter<E>(avroValueType); schema = ReflectData.get().getSchema(avroValueType); } dataFileWriter = new DataFileWriter<E>(datumWriter); if (codec != null) { dataFileWriter.setCodec(codec.getCodecFactory()); } if (userDefinedSchema == null) { dataFileWriter.create(schema, stream); } else { dataFileWriter.create(userDefinedSchema, stream); } }
Example #30
Source Project: iceberg Author: apache File: AvroFileAppender.java License: Apache License 2.0 | 5 votes |
AvroFileAppender(Schema schema, OutputFile file, Function<Schema, DatumWriter<?>> createWriterFunc, CodecFactory codec, Map<String, String> metadata, boolean overwrite) throws IOException { this.stream = overwrite ? file.createOrOverwrite() : file.create(); this.writer = newAvroWriter(schema, stream, createWriterFunc, codec, metadata); }