[英]Writing custom java objects to Parquet
您可以使用Avro反射來獲取架構。 它的代碼就像ReflectData.AllowNull.get().getSchema(CustomClass.class)
。 我有一個示例Parquet演示代碼片段。
本質上,自定義Java對象編寫器是這樣的:
Path dataFile = new Path("/tmp/demo.snappy.parquet");
// Write as Parquet file.
try (ParquetWriter<Team> writer = AvroParquetWriter.<Team>builder(dataFile)
.withSchema(ReflectData.AllowNull.get().getSchema(Team.class))
.withDataModel(ReflectData.get())
.withConf(new Configuration())
.withCompressionCodec(SNAPPY)
.withWriteMode(OVERWRITE)
.build()) {
for (Team team : teams) {
writer.write(team);
}
}
您可以使用自定義Java類替換Team
。 您可以看到Team
類包含Person
對象列表,這與您的要求類似。 而且Avro可以毫無問題地獲得架構。
如果要寫入HDFS,可能需要用HDFS格式替換路徑。 但我沒有親自嘗試。
順便說一句,我的代碼的靈感來自這個鑲木地板示例代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.