当前位置: 首页 > 面试题库 >

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

冷英博
2023-03-14
问题内容

我有一个场景,其中使用Java将作为Json对象存在的消息转换为Apache
Parquet格式。任何示例代码或示例都将有所帮助。据我发现将消息转换为Parquet的内容,正在使用Hive,Pig,Spark。我需要转换为Parquet,而无需Java参与。


问题答案:

要将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);
    }
  }
}


 类似资料:
  • 我有一个以以下格式返回json对象的响应: 我有一个Java类: 我想使用GSON将JSON对象映射到Java对象。 我尝试使用反序列化,它返回了JSON中嵌套值的。

  • 问题内容: 我希望我的JSON看起来像这样: 到目前为止的代码: 和 我只是缺少如何使用Jackson将Java对象转换为JSON的部分: 我的问题是:我的课程正确吗?我必须调用哪个实例,以及如何实现此JSON输出? 问题答案: 要使用Jackson 转换JSON:

  • 问题内容: 使用Marshaller将Java对象转换为XML相当容易。但是我需要单独使用marshaller将Java对象转换为JSON。我知道像使用gson或Xstream这样的东西很好,但是我需要使用Marshaller。如何实现呢? 提前致谢。 问题答案: 注意: 我是 EclipseLink JAXB(MOXy)的 负责人,并且是 JAXB(JSR-222) 专家组的成员, 如果将MOX

  • 我希望我的JSON如下所示: 迄今为止的代码: 和 我只是错过了如何使用Jackson将Java对象转换为JSON的部分: 我的问题是:我的课正确吗?我必须调用哪个实例,以及如何实现这个JSON输出?

  • 早上好 相对来说,我是java新手,正在尝试完成一个项目,但是我遇到了问题。我的程序使用SQL构建一个URL来调用web服务,该服务将返回以下JSON: 我需要做的是在末尾去掉“False”或“True”值,根据其结果执行其他逻辑。 我不断得到以下错误: 这是我在WebCall中构建URL后的代码。java类: 在我的第二节课中,代码如下: 关于可能出错的任何想法?我觉得这可能与JSON响应上的[

  • 有一个网站这样做,但我想要一个图书馆或CLI。 谢了!