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

ASF GitHub Bot commented on PARQUET-2261:
-----------------------------------------

wgtmac commented on code in PR #197:
URL: https://github.com/apache/parquet-format/pull/197#discussion_r1154153616


##########
src/main/thrift/parquet.thrift:
##########
@@ -190,6 +190,44 @@ enum FieldRepetitionType {
   /** The field is repeated and can contain 0 or more values */
   REPEATED = 2;
 }
+/**
+ * A structure for capturing metadata for estimating the unencoded, 
uncompressed size
+ * of data.
+ *
+ * Writers should populate all fields in this struct except for the exceptions 
listed per field.
+ */ 
+struct SizeEstimationStatistics {
+   /** 
+    * The number of physical bytes stored for BYTE_ARRAY data values assuming 
no encoding. This is exclusive of the 
+    * bytes needed to store the length of each byte array. In other words, 
this field is equivelant to the `(size of 
+    * PLAIN-ENCODING the byte array values) - (4 bytes * number of values 
written)`. To determine unencoded sizes 
+    * of other types readers can use schema information multiplied by the 
number of non-null and null values.
+    * The number of null/non-null values can be inferred from the histograms 
below.
+    *
+    * For example if column chunk is dictionary encoded with a dictionary 
["a", "bc", "cde"] and a data page 
+    * has indexes [0, 0, 1, 2].  This value is expected to be 7 (1 + 1 + 2 + 
3).
+    *
+    * This field should only be set for types that use BYTE_ARRAY as their 
physical type.
+    */
+   1: optional i64 unencoded_variable_width_stored_bytes;
+   /** 
+     * When present there is expected to be one element corresponding to each 
repetition (i.e. size=max repetition_level+1) 
+     * where each element represents the number of time the repetition level 
was observed in the data.
+     *
+     * This value is optional if max_repetition_level is 0.
+     *  This field applies to all types.

Review Comment:
   ```suggestion
        * This field applies to all types.
   ```



##########
src/main/thrift/parquet.thrift:
##########
@@ -190,6 +190,44 @@ enum FieldRepetitionType {
   /** The field is repeated and can contain 0 or more values */
   REPEATED = 2;
 }
+/**
+ * A structure for capturing metadata for estimating the unencoded, 
uncompressed size
+ * of data.
+ *
+ * Writers should populate all fields in this struct except for the exceptions 
listed per field.
+ */ 
+struct SizeEstimationStatistics {
+   /** 
+    * The number of physical bytes stored for BYTE_ARRAY data values assuming 
no encoding. This is exclusive of the 
+    * bytes needed to store the length of each byte array. In other words, 
this field is equivelant to the `(size of 
+    * PLAIN-ENCODING the byte array values) - (4 bytes * number of values 
written)`. To determine unencoded sizes 
+    * of other types readers can use schema information multiplied by the 
number of non-null and null values.
+    * The number of null/non-null values can be inferred from the histograms 
below.
+    *
+    * For example if column chunk is dictionary encoded with a dictionary 
["a", "bc", "cde"] and a data page 
+    * has indexes [0, 0, 1, 2].  This value is expected to be 7 (1 + 1 + 2 + 
3).
+    *
+    * This field should only be set for types that use BYTE_ARRAY as their 
physical type.
+    */
+   1: optional i64 unencoded_variable_width_stored_bytes;
+   /** 
+     * When present there is expected to be one element corresponding to each 
repetition (i.e. size=max repetition_level+1) 
+     * where each element represents the number of time the repetition level 
was observed in the data.
+     *
+     * This value is optional if max_repetition_level is 0.

Review Comment:
   `optional` means one can actually writes this field when 
max_repetition_level is 0. Should we change it to `This value is omitted if 
max_repetition_level is 0.`
   
   Same for max_definition_level



##########
src/main/thrift/parquet.thrift:
##########
@@ -190,6 +190,44 @@ enum FieldRepetitionType {
   /** The field is repeated and can contain 0 or more values */
   REPEATED = 2;
 }
+/**
+ * A structure for capturing metadata for estimating the unencoded, 
uncompressed size
+ * of data.
+ *
+ * Writers should populate all fields in this struct except for the exceptions 
listed per field.
+ */ 
+struct SizeEstimationStatistics {
+   /** 
+    * The number of physical bytes stored for BYTE_ARRAY data values assuming 
no encoding. This is exclusive of the 
+    * bytes needed to store the length of each byte array. In other words, 
this field is equivelant to the `(size of 
+    * PLAIN-ENCODING the byte array values) - (4 bytes * number of values 
written)`. To determine unencoded sizes 
+    * of other types readers can use schema information multiplied by the 
number of non-null and null values.
+    * The number of null/non-null values can be inferred from the histograms 
below.
+    *
+    * For example if column chunk is dictionary encoded with a dictionary 
["a", "bc", "cde"] and a data page 
+    * has indexes [0, 0, 1, 2].  This value is expected to be 7 (1 + 1 + 2 + 
3).
+    *
+    * This field should only be set for types that use BYTE_ARRAY as their 
physical type.
+    */
+   1: optional i64 unencoded_variable_width_stored_bytes;
+   /** 
+     * When present there is expected to be one element corresponding to each 
repetition (i.e. size=max repetition_level+1) 
+     * where each element represents the number of time the repetition level 
was observed in the data.
+     *
+     * This value is optional if max_repetition_level is 0.
+     *  This field applies to all types.
+     */
+   2: optional list<i64> repetition_level_histogram;
+   /**
+    * Same as repetition_level_histogram except for definition levels.
+    *
+    * This value is optional when max_definition_level is 0. 
+    *
+    * This field applies to all types.
+    *

Review Comment:
   ```suggestion
   ```





> [Format] Add statistics that reflect decoded size to metadata
> -------------------------------------------------------------
>
>                 Key: PARQUET-2261
>                 URL: https://issues.apache.org/jira/browse/PARQUET-2261
>             Project: Parquet
>          Issue Type: Improvement
>          Components: parquet-format
>            Reporter: Micah Kornfield
>            Assignee: Micah Kornfield
>            Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to