Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java将Json对象转换为拼花格式,而不转换为AVRO(不使用Spark、Hive、Pig、Impala)_Java_Json_Hadoop_Parquet - Fatal编程技术网

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

使用Java将Json对象转换为拼花格式,而不转换为AVRO(不使用Spark、Hive、Pig、Impala),java,json,hadoop,parquet,Java,Json,Hadoop,Parquet,我有一个场景,其中使用Java将作为Json对象显示的消息转换为ApacheParquet格式。任何示例代码或示例都会有所帮助。就我所发现的将信息转换为拼花地板的方法而言,蜂巢、猪、火花都在使用中。我需要转换为Parquet,而不只是通过Java实现。要将JSON数据文件转换为Parquet,需要一些内存表示。拼花地板没有自己的Java对象集;相反,它重用来自其他格式的对象,如Avro和Thrift。这个想法是,拼花地板与应用程序可能已经使用的对象在本地工作 要转换JSON,您需要将记录转换为内

我有一个场景,其中使用Java将作为Json对象显示的消息转换为ApacheParquet格式。任何示例代码或示例都会有所帮助。就我所发现的将信息转换为拼花地板的方法而言,蜂巢、猪、火花都在使用中。我需要转换为Parquet,而不只是通过Java实现。

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

要转换JSON,您需要将记录转换为内存中的Avro对象并将其传递给Parquet,但不需要将文件转换为Avro然后再转换为Parquet

已为您完成了对Avro对象的转换,请参见,并已准备好作为一个应用程序使用。转换方法需要一个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);
    }
  }
}
Schema jsonSchema=JsonUtil.inferSchema(fs.open(source),“RecordName”,20);
try(jsonfillereader=newjsonfillereader)(
fs.open(源代码)、jsonSchema、Record.class){
reader.initialize();
try(parquetwitter writer=avroparquetwitter)
.builder(输出路径)
.withConf(新配置)
.withCompressionCodec(CompressionCodecName.SNAPPY)
.withSchema(jsonSchema)
.build()){
用于(记录:读卡器){
写作(记录);
}
}
}

我也遇到了同样的问题,据我所知,如果不使用avro或其他框架,用于拼花地板编写的示例并不多。最后我和阿夫罗一起去了。:)


请看一看,可能会对您有所帮助。

提前谢谢……您好Vijju,我想实现相同的解决方案,如果您成功实现了上述解决方案,请提供示例代码。其实我有点困惑。谢谢。如何使模式生成的字段成为可选的,而不是必需的?