rdblue commented on code in PR #41:
URL: https://github.com/apache/iceberg-python/pull/41#discussion_r1427430202


##########
pyiceberg/io/pyarrow.py:
##########
@@ -1565,13 +1564,54 @@ def fill_parquet_file_metadata(
         del upper_bounds[field_id]
         del null_value_counts[field_id]
 
-    df.file_format = FileFormat.PARQUET
     df.record_count = parquet_metadata.num_rows
-    df.file_size_in_bytes = file_size
     df.column_sizes = column_sizes
     df.value_counts = value_counts
     df.null_value_counts = null_value_counts
     df.nan_value_counts = nan_value_counts
     df.lower_bounds = lower_bounds
     df.upper_bounds = upper_bounds
     df.split_offsets = split_offsets
+
+
+def write_file(table: Table, tasks: Iterator[WriteTask]) -> Iterator[DataFile]:
+    task = next(tasks)
+
+    try:
+        _ = next(tasks)
+        # If there are more tasks, raise an exception
+        raise ValueError("Only unpartitioned writes are supported: 
https://github.com/apache/iceberg-python/issues/208";)
+    except StopIteration:
+        pass
+
+    df = task.df
+
+    file_path = 
f'{table.location()}/data/{_generate_datafile_filename("parquet")}'

Review Comment:
   Can the `_generate_datafile_filename` method be a bit more robust? The UUID 
in the filename is not for uniqueness, it is to identify files from the same 
write. Here's a breakdown of the format used by Spark:
   
   ```
   \d\d\d\d\d-\d-(UUID)-\d.(extension)
   ^^^^^^^^^^ ^^        ^^
   |||||||||| ||        counter to distinguish files from the same task
   |||||||||| unique task ID from the process (never repeats even for tasks 
that are retried)
     5-digit "partition number" that is the ordinal of a task within a Spark 
stage
   ```
   
   Uniqueness is a combination of the task ID, the write-specific UUID, and the 
file counter for the task. The partition ordinal is used to preserve locality 
in file names.
   
   It would be nice to expose some of these options in the WriteTask, like a 
unique UUID, unique task ID, and part ordinal. Then the counter would be 
handled locally.



-- 
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: issues-unsubscr...@iceberg.apache.org

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


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to