pitrou commented on a change in pull request #11724:
URL: https://github.com/apache/arrow/pull/11724#discussion_r756903239



##########
File path: python/pyarrow/_parquet.pyx
##########
@@ -1278,11 +1297,43 @@ cdef shared_ptr[WriterProperties] 
_create_writer_properties(
 
     if isinstance(use_byte_stream_split, bool):
         if use_byte_stream_split:
-            props.encoding(ParquetEncoding_BYTE_STREAM_SPLIT)
+            if column_encoding is not None:
+                raise ValueError(
+                    "'column_encoding' is not None")
+            else:
+                props.encoding(ParquetEncoding_BYTE_STREAM_SPLIT)
     elif use_byte_stream_split is not None:
         for column in use_byte_stream_split:
-            props.encoding(tobytes(column),
-                           ParquetEncoding_BYTE_STREAM_SPLIT)
+            if column_encoding is None:
+                column_encoding = {column: 'BYTE_STREAM_SPLIT'}
+            elif column_encoding.get(column, None) is None:
+                column_encoding[column]='BYTE_STREAM_SPLIT'
+            else:
+                raise ValueError(
+                    "Column {0} is already specified in 'column_encoding'"
+                    .format(column))
+
+    # column_encoding
+    # encoding map - encode individual columns
+
+    if column_encoding is not None:
+        if isinstance(column_encoding, dict):
+            for column, _encoding in column_encoding.items():
+                if encoding_enum_from_name(_encoding) is None:
+                    raise ValueError("Unsupported column encoding: {0}"
+                                     .format(_encoding))

Review comment:
       It does, but I think you can also do it all-in-one:
   ```cython
   cdef encoding_enum_from_name(str encoding_name):
       enc = {
           'PLAIN': ParquetEncoding_PLAIN,
           'BIT_PACKED': ParquetEncoding_BIT_PACKED,
           'RLE': ParquetEncoding_RLE,
           'BYTE_STREAM_SPLIT': ParquetEncoding_BYTE_STREAM_SPLIT,
           'DELTA_BINARY_PACKED': ParquetEncoding_DELTA_BINARY_PACKED,
           'DELTA_BYTE_ARRAY': ParquetEncoding_DELTA_BYTE_ARRAY,
       }.get(encoding_name)
       if enc is None:
           raise ValueError(f"Unsupported column encoding: {name!r}") 
   ```
   




-- 
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: github-unsubscr...@arrow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to