2016-09-30 3 views
1

Поскольку файл данных в avro, встроенный в схему для этого, читатель не хочет сохранять отдельный файл .avsc для указания схемы. Я искал пример Java, который работает таким образом, я не мог этого найти. Кто-нибудь, пожалуйста, помогите мне получить образец кода для этого же.Анализ схемы Avro из файла данных

Schema schema = new Schema.Parser().parse(new File("./AvroSchema/emp.avsc")); 

DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>(schema); 
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(new File("./AvroFileStore/empData.txt"), datumReader); 

GenericRecord emp = null; 
while (dataFileReader.hasNext()) { 
    emp = dataFileReader.next(emp); 
    System.out.println(emp); 
} 

В этом примере мы предоставляем Avro схему отдельно DataFileReader с помощью datumReader.

ответ

1

GenericDatumReader также имеет конструктор, который не принимает никаких параметров. Просто не передавайте ей никакой схемы. Конечно, это будет работать только с файлами данных, а не с потоками данных, которые не имеют встроенной схемы.

BTW после того, как вы построили dataFileReader, вы можете вызвать его метод getSchema(), чтобы получить схему, если она когда-либо понадобится.

Источники: Hadoop: The Definitive Guide by Tom White

+0

Большое спасибо. Он работал нормально. – Jobs

Смежные вопросы