2016-09-30 7 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); 
} 

我々はdatumReaderを使用してDataFileReaderに別々にアブロスキーマを提供しています。

答えて

1

GenericDatumReaderには、パラメータを一切使用しないコンストラクタもあります。単にそれにスキーマを渡さないでください。もちろん、これはデータファイルでのみ機能し、スキーマが埋め込まれていないデータストリームでは機能しません。

ところでdataFileReaderを作成したら、getSchema()メソッドを呼び出して必要に応じてスキーマを取得できます。

ソース:Hadoop: The Definitive Guide by Tom White

+0

ありがとうございます。それは正常に働いた。 – Jobs

関連する問題