我正在使用以下代碼創建ParquetWriter並向其中寫入記錄。如何將數據追加到現有的實木複合地板文件
ParquetWriter<GenericRecord> parquetWriter = new ParquetWriter(path, writeSupport, CompressionCodecName.SNAPPY, BLOCK_SIZE, PAGE_SIZE);
final GenericRecord record = new GenericData.Record(avroSchema);
parquetWriter.write(record);
但只允許創建新的文件(在specfied路徑)。 有沒有辦法將數據追加到現有的parquet文件(在路徑上)?在我的情況下,緩存parquetWriter是不可行的。
上面的回答是不準確的。 Parquet將列切成塊,並允許將一部分列存儲在單個文件內的多個塊中,因此可以追加。如果您閱讀鑲木地板背後的設計理念 - 很明顯,格式是專爲追加而設計的,通過砌磚牆結構來判斷。 – travnik
https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/sql/SaveMode.html – bluszcz
我認爲append在實木複合客戶端API中不受支持,我知道它在那裏在火花中,但我對支持讀取所需塊的列存儲存有疑問。在這種情況下,追加程序如何工作,可能會在現有的列塊中追加。你有鏈接有建築細節。 – Krishas