您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Json使用Java将对象转换为Parquet格式而不转换为AVRO(不使用Spark,Hive,Pig,Impala)

Json使用Java将对象转换为Parquet格式而不转换为AVRO(不使用Spark,Hive,Pig,Impala)

要将JSON数据文件转换为Parquet,您需要一些内存表示形式。Parquet没有自己的Java对象集。相反,它重用了其他格式的对象,例如Avro和Thrift。这个想法是,Parquet可以与您的应用程序可能已经使用的对象一起本地工作。

要转换JSON,您需要将记录转换为Avro 内存中对象 并将其传递给Parquet,但是您无需将文件转换为Avro再转换为Parquet。

已经为您完成了到Avro对象的转换,请参见Kite的JsonUtil并准备用作文件读取器。转换方法需要一个Avro模式,但是您可以使用同一库从JSON数据推断一个Avro模式

要写这些记录,您只需要使用ParquetAvroWriter。整个设置如下所示:

Schema jsonSchema = JsonUtil.inferSchema(fs.open(source), "RecordName", 20);
try (JSONFileReader<Record> reader = new JSONFileReader<>(
                    fs.open(source), jsonSchema, Record.class)) {

  reader.initialize();

  try (ParquetWriter<Record> writer = AvroParquetWriter
      .<Record>builder(outputPath)
      .withConf(new Configuration)
      .withCompressionCodec(CompressionCodecName.SNAPPY)
      .withSchema(jsonSchema)
      .build()) {
    for (Record record : reader) {
      writer.write(record);
    }
  }
}
java 2022/1/1 18:17:36 有734人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶