将字节数组avro转换为拼花地板

将字节数组avro转换为拼花地板,avro,parquet,Avro,Parquet,我从下面的代码中得到了字节数组 public static byte[] jsonToAvro(String json, Schema schema) throws IOException { DatumReader<Object> reader = new GenericDatumReader<>(schema); GenericDatumWriter<Object> writer = new GenericDatumWriter<>(schem

我从下面的代码中得到了字节数组

public static byte[] jsonToAvro(String json, Schema schema) throws IOException {
DatumReader<Object> reader = new GenericDatumReader<>(schema);
GenericDatumWriter<Object> writer = new GenericDatumWriter<>(schema);
ByteArrayOutputStream output = new ByteArrayOutputStream();
Decoder decoder = DecoderFactory.get().jsonDecoder(schema, json);
Encoder encoder = EncoderFactory.get().binaryEncoder(output, null);
Object datum = reader.read(null, decoder);
writer.write(datum, encoder);
encoder.flush();
output.close();
System.out.println("Serialization: " + output);
return output.toByteArray(); }
我是指这个博客的avro到拼花地板转换。任何其他方法的转换是欢迎的

FileUtils.writeByteArrayToFile(new File("C:\\Users\\xyz\\workspace\\JasonToAvro\\src\\main\\java\\json\\avro\\test.avro"), avroByteArray)
File Avro_file = new File("C:\\Users\\xyz\\workspace\\JasonToAvro\\src\\main\\java\\json\\avro\\test.avro");

static void fromAvroToParquet( File avroFile  ) throws IOException{
GenericDatumReader<Object> greader = new GenericDatumReader<Object>();
FileReader<Object> fileReader = DataFileReader.openReader(avroFile, greader);
Schema avroSchema = fileReader.getSchema() ; //further code
Exception in thread "main" java.io.IOException: Not an Avro data file
at org.apache.avro.file.DataFileReader.openReader(DataFileReader.java:63)
at org.apache.avro.file.DataFileReader.openReader(DataFileReader.java:42)
at json.avro.JasonToAvro.JasonToAvro.fromAvroToParquet(JasonToAvro.java:81)
at json.avro.JasonToAvro.JasonToAvro.main(JasonToAvro.java:39)