[ 
https://issues.apache.org/jira/browse/PARQUET-1559?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17171434#comment-17171434
 ] 

wxmimperio commented on PARQUET-1559:
-------------------------------------

[~gszadovszky]

Hi, If I need to write multiple files, and each file is very large, such as 
flink to hdfs.

There is not enough memory to buffer all the data, resulting in serious gc.

I don’t need the files to be readable, just flush the memory to disk.

And I did not find a place to call PositionOutputStream.flush(), I think this 
is the main reason.

columnStore.flush、columnStore.flush, just flush to PositionOutputStream, but 
not to disk.
{code:java}
//代码占位符
private void flushRowGroupToStore()
    throws IOException {
  recordConsumer.flush();
  LOG.debug("Flushing mem columnStore to file. allocated memory: {}", 
columnStore.getAllocatedSize());
  if (columnStore.getAllocatedSize() > (3 * rowGroupSizeThreshold)) {
    LOG.warn("Too much memory used: {}", columnStore.memUsageString());
  }

  if (recordCount > 0) {
    parquetFileWriter.startBlock(recordCount);
    columnStore.flush();
    pageStore.flushToFileWriter(parquetFileWriter);
    recordCount = 0;
    parquetFileWriter.endBlock();
    this.nextRowGroupSize = Math.min(
        parquetFileWriter.getNextRowGroupSize(),
        rowGroupSizeThreshold);
  }

  columnStore = null;
  pageStore = null;
}
{code}

> Add way to manually commit already written data to disk
> -------------------------------------------------------
>
>                 Key: PARQUET-1559
>                 URL: https://issues.apache.org/jira/browse/PARQUET-1559
>             Project: Parquet
>          Issue Type: Improvement
>          Components: parquet-mr
>    Affects Versions: 1.10.1
>            Reporter: Victor
>            Priority: Major
>
> I'm not exactly sure this is compliant with the way parquet works, but I have 
> the following need:
>  * I'm using parquet-avro to write to a parquet file during a long running 
> process
>  * I would like to be able from time to time to access the already written 
> data
> So I was expecting to be able to flush manually the file to ensure the data 
> is on disk and then copy the file for preliminary analysis.
> If it's contradictory to the way parquet works (for example there is 
> something about metadata being at the footer of the file), what would then be 
> the alternative?
> Closing the file and opening a new one to continue writing?
> Could this be supported directly by parquet-mr maybe? It would then write 
> multiple files in that case.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to