kszucs commented on code in PR #21110:
URL: https://github.com/apache/datafusion/pull/21110#discussion_r3014082004


##########
docs/source/user-guide/configs.md:
##########
@@ -112,6 +112,7 @@ The following configuration settings are available:
 | datafusion.execution.parquet.allow_single_file_parallelism              | 
true                      | (writing) Controls whether DataFusion will attempt 
to speed up writing parquet files by serializing them in parallel. Each column 
in each row group in each output file are serialized in parallel leveraging a 
maximum possible core count of n_files*n_row_groups*n_columns.                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                             
                                                                                
                                                                                
                                                                                
                                                                 |
 | datafusion.execution.parquet.maximum_parallel_row_group_writers         | 1  
                       | (writing) By default parallel parquet writer is tuned 
for minimum memory usage in a streaming execution plan. You may see a 
performance benefit when writing large parquet files by increasing 
maximum_parallel_row_group_writers and 
maximum_buffered_record_batches_per_stream if your system has idle cores and 
can tolerate additional memory usage. Boosting these values is likely 
worthwhile when writing out already in-memory data, such as from a cached data 
frame.                                                                          
                                                                                
                                                                                
                                                                                
                                                                                
                                     
                                                                                
                                                                                
                                                                                
                                                                 |
 | datafusion.execution.parquet.maximum_buffered_record_batches_per_stream | 2  
                       | (writing) By default parallel parquet writer is tuned 
for minimum memory usage in a streaming execution plan. You may see a 
performance benefit when writing large parquet files by increasing 
maximum_parallel_row_group_writers and 
maximum_buffered_record_batches_per_stream if your system has idle cores and 
can tolerate additional memory usage. Boosting these values is likely 
worthwhile when writing out already in-memory data, such as from a cached data 
frame.                                                                          
                                                                                
                                                                                
                                                                                
                                                                                
                                     
                                                                                
                                                                                
                                                                                
                                                                 |
+| datafusion.execution.parquet.use_content_defined_chunking               | 
NULL                      | (writing) EXPERIMENTAL: Enable content-defined 
chunking (CDC) when writing parquet files. When `Some`, CDC is enabled with the 
given options; when `None` (the default), CDC is disabled. When CDC is enabled, 
parallel writing is automatically disabled since the chunker state must persist 
across row groups.                                                              
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                              
                                                                                
                                                                                
                                                                                
                                                                 |

Review Comment:
   It was originally contributed to parquet-cpp=21.0.0 as an experimental 
feature in order to allow us breaking the API but hasn't actually changed since 
then, now we are at 23.0.0. 
   
   I'm not anticipating any API breaking changes in the future, the only thing 
I may adjust are the default parameters. The current 256KiB-1MiB chunk sizes 
were optimized for the parquet-cpp defaults with 1MiB page sizes, but since 
then parquet-cpp has switched to similar row number based page splitting as 
parquet-rs does. Switching to smaller default chunk sizes may further improve 
the deduplication efficiency, just needs some experimentation with the page 
size distribution via https://github.com/huggingface/dataset-dedupe-estimator.
   
   I can remove the experimental flag in this PR or when graduating the CDC 
feature in the parquet-cpp implementation.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to