Json使用Java反对Parquet格式而不转换为AVRO(不使用Spark,Hive,Pig,Impala)
我有一个场景,使用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 reader = new JSONFileReader<>( fs.open(source), jsonSchema, Record.class)) { reader.initialize(); try (ParquetWriter writer = AvroParquetWriter . builder(outputPath) .withConf(new Configuration) .withCompressionCodec(CompressionCodecName.SNAPPY) .withSchema(jsonSchema) .build()) { for (Record record : reader) { writer.write(record); } } }
我有同样的问题,我明白,没有使用avro或其他框架,没有太多的样本可用于镶木地板。 最后我和Avro一起去了。 🙂
看看这个 ,可以帮到你。
- 是否可以使用没有hadoop依赖的apache mahout?
- 处理序列化框架的不兼容版本更改
- 从Java应用程序中执行Pig
- 多输出路径(Java – Hadoop – MapReduce)
- Hadoop作业:任务无法报告状态601秒
- java中的java.sql.SQLException:org.apache.thrift.transport.TTransportException?
- 线程“main”中的exceptionjava.lang.NoClassDefFoundError:org / apache / hadoop / hbase / HBaseConfiguration
- 为什么运行hadoop时数据节点会关闭?
- 为什么我们在Hadoop堆栈中需要ZooKeeper?