我收到Kafka的avro记录。我想把这些记录转换成Parquet文件。我关注这篇博文:http://blog.cloudera.com/blog/2014/05/how-to-convert-existing-data-into-parquet/
到目前为止,代码大致如下:
final String fileName
SinkRecord record,
final AvroData avroData
final Schema avroSchema = avroData.fromConnectSchema(record.valueSchema());
CompressionCodecName compressionCodecName = CompressionCodecName.SNAPPY;
int blockSize = 256 * 1024 * 1024;
int pageSize = 64 * 1024;
Path path = new Path(fileName);
writer = new AvroParquetWriter<>(path, avroSchema, compressionCodecName, blockSize, pageSize);
现在,这将执行avro到parquet的转换,但是它会将parquet文件写入磁盘。我想知道是否有一种更简单的方法把文件保存在内存中,这样我就不必管理磁盘上的临时文件了。谢谢您
1条答案
按热度按时间beq87vna1#
从您的查询中,我了解到您不想将部分文件写入parquet。如果您想将完整的文件以Parquet格式写入磁盘,并将临时文件写入内存,则可以使用内存Map文件和Parquet格式的组合。
将数据写入内存Map文件,完成写入后将字节转换为Parquet格式并存储到磁盘。
看看mappedbytebuffer。