java 写入parquet_将自定义Java对象写入Parquet

您可以使用Avro反射来获取架构.它的代码就像ReflectData.AllowNull.get().getSchema(CustomClass.class).我有一个示例

Parquet demo代码段.

本质上,自定义Java对象编写器是这样的:

Path dataFile = new Path("/tmp/demo.snappy.parquet");

// Write as Parquet file.

try (ParquetWriter writer = AvroParquetWriter.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格式替换路径.但我没有亲自尝试.

顺便说一下,我的代码的灵感来自于这个parquet-example代码.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值