2016-09-22 2 views
1

카프카에서 Avro 레코드를 받고 있습니다. 나는이 레코드들을 마루 파일들로 변환하고 싶다.Q : Avro를 메모리의 마루로 변환하기

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); 

지금, 이것은 아 브로가 변환을 나무 마루을 할 것입니다,하지만 디스크에 마루 파일을 작성합니다 : http://blog.cloudera.com/blog/2014/05/how-to-convert-existing-data-into-parquet/

코드는 지금까지 대략 다음과 같습니다 :이 블로그 게시물을 다음입니다. 디스크에 임시 파일을 관리 할 필요가 없도록 파일을 메모리에 보관하는 쉬운 방법이 있는지 궁금합니다. 고마워요

답변

0
"but it will write the Parquet file to the disk" 
"if there was an easier way to just keep the file in memory" 

당신의 질문에서 저는 부분 파일을 쪽매에 쓰고 싶지 않다는 것을 알았습니다. 전체 파일을 나무 마루 형식으로 작성하고 임시 파일을 메모리에 기록하려면 메모리 매핑 파일과 쪽모이 세 형식을 함께 사용할 수 있습니다.

메모리 매핑 된 파일에 데이터를 쓰고 일단 쓰기를 완료하면 바이트를 쪽모락 형식으로 변환하고 디스크에 저장합니다.

MappedByteBuffer을 살펴보십시오.

관련 문제