[英]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.