Saltar al contenido

Objeto Json a formato Parquet usando Java sin convertir a AVRO (sin usar Spark, Hive, Pig, Impala)

Solución:

Para convertir archivos de datos JSON a Parquet, necesita alguna representación en memoria. Parquet no tiene su propio conjunto de objetos Java; en cambio, reutiliza los objetos de otros formatos, como Avro y Thrift. La idea es que Parquet funcione de forma nativa con los objetos que probablemente ya utilicen sus aplicaciones.

Para convertir su JSON, debe convertir los registros a Avro objetos en memoria y pasarlos a Parquet, pero no es necesario convertir un archivo a Avro y luego a Parquet.

La conversión a objetos Avro ya está hecha para usted, consulte JsonUtil de Kite y está lista para usar como lector de archivos. El método de conversión necesita un esquema Avro, pero puede usar esa misma biblioteca para inferir un esquema Avro a partir de datos JSON.

Para escribir esos registros, solo necesita usar ParquetAvroWriter. Toda la configuración se ve así:

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);
    }
  }
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *