복붙노트

[HADOOP] Json은 AVRO로 변환하지 않고 Java를 사용하여 마루판 형식으로 처리합니다 (Spark, Hive, Pig, Impala를 사용하지 않음).

HADOOP

Json은 AVRO로 변환하지 않고 Java를 사용하여 마루판 형식으로 처리합니다 (Spark, Hive, Pig, Impala를 사용하지 않음).

Json 객체로 존재하는 메시지를 Java를 사용하여 Apache Parquet 형식으로 변환하는 시나리오가 있습니다. 모든 샘플 코드 또는 예제가 도움이 될 것입니다. 내가 마루로 하이브, 돼지, 스파크 중 한 가지로 메시지를 변환하는 것으로 밝혀진 것까지. 자바 만 관련시키지 않고 파케 변환해야합니다.

해결법

  1. ==============================

    1.JSON 데이터 파일을 마루로 변환하려면 일부 메모리 내 표현이 필요합니다. 마루판에는 자체 자바 객체 세트가 없습니다. 대신 Avro 및 Thrift와 같은 다른 형식의 개체를 다시 사용합니다. 아이디어는 파르 케 (Parquet)가 네이티브 애플리케이션이 이미 사용하고있는 객체와 함께 작동한다는 것입니다.

    JSON 데이터 파일을 마루로 변환하려면 일부 메모리 내 표현이 필요합니다. 마루판에는 자체 자바 객체 세트가 없습니다. 대신 Avro 및 Thrift와 같은 다른 형식의 개체를 다시 사용합니다. 아이디어는 파르 케 (Parquet)가 네이티브 애플리케이션이 이미 사용하고있는 객체와 함께 작동한다는 것입니다.

    JSON을 변환하려면 레코드를 Avro 메모리 내 오브젝트로 변환하고이를 Perl에 전달해야하지만 파일을 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);
        }
      }
    }
    
  2. ==============================

    2.나는 같은 문제를 가지고 있었는데, avro 또는 다른 프레임 워크를 사용하지 않고 마루 쓰기에 사용할 샘플이별로 없다는 것을 이해했다. 마침내 나는 Avro와 함께 갔다. :)

    나는 같은 문제를 가지고 있었는데, avro 또는 다른 프레임 워크를 사용하지 않고 마루 쓰기에 사용할 샘플이별로 없다는 것을 이해했다. 마침내 나는 Avro와 함께 갔다. :)

    이것 좀 봐, 당신을 도울 수 있습니다.

  3. from https://stackoverflow.com/questions/39858856/json-object-to-parquet-format-using-java-without-converting-to-avrowithout-usin by cc-by-sa and MIT license