diff --git a/core/src/main/java/org/apache/iceberg/avro/AvroEncoderUtil.java b/core/src/main/java/org/apache/iceberg/avro/AvroEncoderUtil.java index ba3c6fece7f9..9392cf517322 100644 --- a/core/src/main/java/org/apache/iceberg/avro/AvroEncoderUtil.java +++ b/core/src/main/java/org/apache/iceberg/avro/AvroEncoderUtil.java @@ -54,7 +54,7 @@ public static byte[] encode(T datum, Schema avroSchema) throws IOException { dataOut.writeUTF(avroSchema.toString()); // Encode the datum with avro schema. - BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(out, null); + BinaryEncoder encoder = EncoderFactory.get().blockingDirectBinaryEncoder(out, null); DatumWriter writer = new GenericAvroWriter<>(avroSchema); writer.write(datum, encoder); encoder.flush(); diff --git a/core/src/main/java/org/apache/iceberg/avro/AvroFileAppender.java b/core/src/main/java/org/apache/iceberg/avro/AvroFileAppender.java index a583f9a84e1c..3f8cc2c66042 100644 --- a/core/src/main/java/org/apache/iceberg/avro/AvroFileAppender.java +++ b/core/src/main/java/org/apache/iceberg/avro/AvroFileAppender.java @@ -25,6 +25,7 @@ import org.apache.avro.file.CodecFactory; import org.apache.avro.file.DataFileWriter; import org.apache.avro.io.DatumWriter; +import org.apache.avro.io.EncoderFactory; import org.apache.iceberg.Metrics; import org.apache.iceberg.MetricsConfig; import org.apache.iceberg.exceptions.RuntimeIOException; @@ -113,6 +114,8 @@ private static DataFileWriter newAvroWriter( writer.setMeta(entry.getKey(), entry.getValue()); } + writer.setEncoder(b -> EncoderFactory.get().blockingDirectBinaryEncoder(b, null)); + return writer.create(schema, stream); } } diff --git a/core/src/main/java/org/apache/iceberg/data/avro/IcebergEncoder.java b/core/src/main/java/org/apache/iceberg/data/avro/IcebergEncoder.java index a70e79aac2c5..0e747b9e5d6c 100644 --- a/core/src/main/java/org/apache/iceberg/data/avro/IcebergEncoder.java +++ b/core/src/main/java/org/apache/iceberg/data/avro/IcebergEncoder.java @@ -98,7 +98,7 @@ public ByteBuffer encode(D datum) throws IOException { @Override public void encode(D datum, OutputStream stream) throws IOException { - BinaryEncoder encoder = EncoderFactory.get().directBinaryEncoder(stream, ENCODER.get()); + BinaryEncoder encoder = EncoderFactory.get().blockingDirectBinaryEncoder(stream, ENCODER.get()); ENCODER.set(encoder); writer.write(datum, encoder); encoder.flush();