AnzhiZhang commented on issue #3555: URL: https://github.com/apache/texera/issues/3555#issuecomment-3181804917
There is one additional issue related to that. When the attribute name is not set, the workflow fails to run, but no error is returned. <img width="1065" height="1045" alt="Image" src="https://github.com/user-attachments/assets/b95ddb80-4fca-44f4-acdb-beee8a4cb929" /> Should we fix this together with this issue, or refer it to a new issue? The error message is: ``` 2025-08-12 17:39:52.177 | ERROR | threading:run:953 - An error has been caught in function 'run', process 'MainProcess' (70036), thread 'port_storage_writer_thread_PortIdentity(id=0, internal=False)' (13577547776): Traceback (most recent call last): File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 973, in _bootstrap self._bootstrap_inner() │ └ <function Thread._bootstrap_inner at 0x1057c6a70> └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13577547776)> File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() │ └ <function Thread.run at 0x1057c67a0> └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13577547776)> > File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) │ │ │ │ │ └ {} │ │ │ │ └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13577547776)> │ │ │ └ () │ │ └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13577547776)> │ └ <bound method StoppableQueueBlockingRunnable.run of <core.storage.runnables.port_storage_writer.PortStorageWriter object at 0... └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13577547776)> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py", line 70, in run self.post_stop() │ └ <function PortStorageWriter.post_stop at 0x32105d900> └ <core.storage.runnables.port_storage_writer.PortStorageWriter object at 0x32801f5b0> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/runnables/port_storage_writer.py", line 51, in post_stop self.buffered_item_writer.close() │ │ └ <function IcebergTableWriter.close at 0x320c28940> │ └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object at 0x32801f7c0> └ <core.storage.runnables.port_storage_writer.PortStorageWriter object at 0x32801f5b0> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 123, in close self._flush_buffer() │ └ <function IcebergTableWriter._flush_buffer at 0x320c288b0> └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object at 0x32801f7c0> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 117, in _flush_buffer append_to_table_with_retry(df) │ └ pyarrow.Table │ : int32 │ ---- │ : [[1,2,3]] └ <function IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry at 0x328048ca0> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 115, in append_to_table_with_retry append_with_retry() └ <function IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry at 0x3282f1000> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 336, in wrapped_f return copy(f, *args, **kw) │ │ │ └ {} │ │ └ () │ └ <function IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry at 0x324dd8550> └ <Retrying object at 0x3282b5b40 (stop=<tenacity.stop.stop_after_attempt object at 0x3282b5150>, wait=<tenacity.wait.wait_rand... File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 475, in __call__ do = self.iter(retry_state=retry_state) │ │ └ <RetryCallState 13439549104: attempt #10; slept for 0.21; last result: failed (AssertionError Can not validate empty avro name)> │ └ <function BaseRetrying.iter at 0x320c0a710> └ <Retrying object at 0x3282b5b40 (stop=<tenacity.stop.stop_after_attempt object at 0x3282b5150>, wait=<tenacity.wait.wait_rand... File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 376, in iter result = action(retry_state) │ └ <RetryCallState 13439549104: attempt #10; slept for 0.21; last result: failed (AssertionError Can not validate empty avro name)> └ <function BaseRetrying._post_stop_check_actions.<locals>.exc_check at 0x32828bf40> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 418, in exc_check raise retry_exc.reraise() │ └ <function RetryError.reraise at 0x320c09d80> └ RetryError(<Future at 0x3295e25f0 state=finished raised AssertionError>) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 185, in reraise raise self.last_attempt.result() │ │ └ <function Future.result at 0x10599f490> │ └ <Future at 0x3295e25f0 state=finished raised AssertionError> └ RetryError(<Future at 0x3295e25f0 state=finished raised AssertionError>) File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 451, in result return self.__get_result() └ None File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception └ None File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 478, in __call__ result = fn(*args, **kwargs) │ │ └ {} │ └ () └ <function IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry at 0x324dd8550> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 113, in append_with_retry self.table.append(pa_df) │ │ │ └ pyarrow.Table │ │ │ : int32 │ │ │ ---- │ │ │ : [[1,2,3]] │ │ └ <function Table.append at 0x1761b6830> │ └ wid_9_eid_45_globalportid_(logicalOpId=PythonUDFSourceV2-operator-109a11ab-df23-4648-9760-e3db9211283e,layerName=main,portId=... └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object at 0x32801f7c0> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py", line 984, in append tx.append(df=df, snapshot_properties=snapshot_properties) │ │ │ └ {} │ │ └ pyarrow.Table │ │ : int32 │ │ ---- │ │ : [[1,2,3]] │ └ <function Transaction.append at 0x1761b4d30> └ <pyiceberg.table.Transaction object at 0x32801e650> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py", line 417, in append for data_file in data_files: └ <generator object _dataframe_to_data_files at 0x3282706d0> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py", line 2627, in _dataframe_to_data_files yield from write_file( └ <function write_file at 0x320bcd630> File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 621, in result_iterator yield _result_or_cancel(fs.pop()) │ │ └ <method 'pop' of 'list' objects> │ └ [] └ <function _result_or_cancel at 0x10599ee60> File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 319, in _result_or_cancel return fut.result(timeout) └ None File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 458, in result return self.__get_result() └ None File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception └ None File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) │ │ └ None │ └ None └ None File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py", line 2428, in write_parquet if (sanitized_schema := sanitize_column_names(table_schema)) != table_schema: │ │ └ Schema(NestedField(field_id=1, name='', field_type=IntegerType(), required=False), schema_id=0, identifier_field_ids=[]) │ └ Schema(NestedField(field_id=1, name='', field_type=IntegerType(), required=False), schema_id=0, identifier_field_ids=[]) └ <function sanitize_column_names at 0x169d80a60> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1355, in sanitize_column_names result = visit(schema.as_struct(), _SanitizeColumnsVisitor()) │ │ │ └ <class 'pyiceberg.schema._SanitizeColumnsVisitor'> │ │ └ <function Schema.as_struct at 0x169d164d0> │ └ Schema(NestedField(field_id=1, name='', field_type=IntegerType(), required=False), schema_id=0, identifier_field_ids=[]) └ <function visit at 0x169bdb880> File "/opt/anaconda3/envs/texera/lib/python3.10/functools.py", line 889, in wrapper return dispatch(args[0].__class__)(*args, **kw) │ │ │ └ {} │ │ └ (StructType(fields=(NestedField(field_id=1, name='', field_type=IntegerType(), required=False),)), <pyiceberg.schema._Sanitiz... │ └ (StructType(fields=(NestedField(field_id=1, name='', field_type=IntegerType(), required=False),)), <pyiceberg.schema._Sanitiz... └ <function singledispatch.<locals>.dispatch at 0x169bd96c0> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 835, in _ results.append(visitor.field(field, result)) │ │ │ │ │ └ IntegerType() │ │ │ │ └ NestedField(field_id=1, name='', field_type=IntegerType(), required=False) │ │ │ └ <function _SanitizeColumnsVisitor.field at 0x169d80c10> │ │ └ <pyiceberg.schema._SanitizeColumnsVisitor object at 0x3295e1c00> │ └ <method 'append' of 'list' objects> └ [] File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1370, in field name=make_compatible_name(field.name), │ │ └ '' │ └ NestedField(field_id=1, name='', field_type=IntegerType(), required=False) └ <function make_compatible_name at 0x169d803a0> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1305, in make_compatible_name if not _valid_avro_name(name): │ └ '' └ <function _valid_avro_name at 0x169d808b0> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1312, in _valid_avro_name assert length > 0, ValueError("Can not validate empty avro name") └ 0 AssertionError: Can not validate empty avro name Exception in thread port_storage_writer_thread_PortIdentity(id=0, internal=False): Traceback (most recent call last): File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/loguru/_logger.py", line 1251, in catch_wrapper return function(*args, **kwargs) File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py", line 70, in run self.post_stop() File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/runnables/port_storage_writer.py", line 51, in post_stop self.buffered_item_writer.close() File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 123, in close self._flush_buffer() File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 117, in _flush_buffer append_to_table_with_retry(df) File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 115, in append_to_table_with_retry append_with_retry() File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 336, in wrapped_f return copy(f, *args, **kw) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 475, in __call__ do = self.iter(retry_state=retry_state) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 376, in iter result = action(retry_state) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 418, in exc_check raise retry_exc.reraise() File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 185, in reraise raise self.last_attempt.result() File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 451, in result return self.__get_result() File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 478, in __call__ result = fn(*args, **kwargs) File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 113, in append_with_retry self.table.append(pa_df) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py", line 984, in append tx.append(df=df, snapshot_properties=snapshot_properties) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py", line 417, in append for data_file in data_files: File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py", line 2627, in _dataframe_to_data_files yield from write_file( File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 621, in result_iterator yield _result_or_cancel(fs.pop()) File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 319, in _result_or_cancel return fut.result(timeout) File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 458, in result return self.__get_result() File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py", line 2428, in write_parquet if (sanitized_schema := sanitize_column_names(table_schema)) != table_schema: File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1355, in sanitize_column_names result = visit(schema.as_struct(), _SanitizeColumnsVisitor()) File "/opt/anaconda3/envs/texera/lib/python3.10/functools.py", line 889, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 835, in _ results.append(visitor.field(field, result)) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1370, in field name=make_compatible_name(field.name), File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1305, in make_compatible_name if not _valid_avro_name(name): File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1312, in _valid_avro_name assert length > 0, ValueError("Can not validate empty avro name") AssertionError: Can not validate empty avro name 2025-08-12 17:39:52.199 | INFO | core.runnables.main_loop:_process_ecm:298 - receive channel ECM from ChannelIdentity(from_worker_id=ActorVirtualIdentity(name='Worker:WF9-PythonUDFSourceV2-operator-109a11ab-df23-4648-9760-e3db9211283e-main-0'), to_worker_id=ActorVirtualIdentity(name='Worker:WF9-Sort-operator-dee3ef66-be79-42c0-b06d-dc48ad732ab6-main-0'), is_control=False), id = EmbeddedControlMessageIdentity(id='EndChannel'), cmd = ControlInvocation(method_name='EndChannel', command=ControlRequest(empty_request=EmptyRequest()), command_id=-1) 2025-08-12 17:39:52.199 | INFO | core.runnables.main_loop:_process_ecm:307 - process channel ECM from ChannelIdentity(from_worker_id=ActorVirtualIdentity(name='Worker:WF9-PythonUDFSourceV2-operator-109a11ab-df23-4648-9760-e3db9211283e-main-0'), to_worker_id=ActorVirtualIdentity(name='Worker:WF9-Sort-operator-dee3ef66-be79-42c0-b06d-dc48ad732ab6-main-0'), is_control=False), id = EmbeddedControlMessageIdentity(id='EndChannel'), cmd = ControlInvocation(method_name='EndChannel', command=ControlRequest(empty_request=EmptyRequest()), command_id=-1) 2025-08-12 17:39:52.404 | ERROR | threading:run:953 - An error has been caught in function 'run', process 'MainProcess' (70037), thread 'port_storage_writer_thread_PortIdentity(id=0, internal=False)' (13539864576): Traceback (most recent call last): File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 973, in _bootstrap self._bootstrap_inner() │ └ <function Thread._bootstrap_inner at 0x102c92950> └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13539864576)> File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() │ └ <function Thread.run at 0x102c92680> └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13539864576)> > File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) │ │ │ │ │ └ {} │ │ │ │ └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13539864576)> │ │ │ └ () │ │ └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13539864576)> │ └ <bound method StoppableQueueBlockingRunnable.run of <core.storage.runnables.port_storage_writer.PortStorageWriter object at 0... └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started daemon 13539864576)> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py", line 70, in run self.post_stop() │ └ <function PortStorageWriter.post_stop at 0x16e3cd7e0> └ <core.storage.runnables.port_storage_writer.PortStorageWriter object at 0x16f28fee0> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/runnables/port_storage_writer.py", line 51, in post_stop self.buffered_item_writer.close() │ │ └ <function IcebergTableWriter.close at 0x16c7b0820> │ └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object at 0x16f28f310> └ <core.storage.runnables.port_storage_writer.PortStorageWriter object at 0x16f28fee0> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 123, in close self._flush_buffer() │ └ <function IcebergTableWriter._flush_buffer at 0x16c7b0790> └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object at 0x16f28f310> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 117, in _flush_buffer append_to_table_with_retry(df) │ └ pyarrow.Table │ : int32 │ ---- │ : [[3,2,1]] └ <function IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry at 0x16f69fd90> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 115, in append_to_table_with_retry append_with_retry() └ <function IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry at 0x16f6f8b80> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 336, in wrapped_f return copy(f, *args, **kw) │ │ │ └ {} │ │ └ () │ └ <function IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry at 0x16f6f9000> └ <Retrying object at 0x16f84a020 (stop=<tenacity.stop.stop_after_attempt object at 0x16f849b70>, wait=<tenacity.wait.wait_rand... File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 475, in __call__ do = self.iter(retry_state=retry_state) │ │ └ <RetryCallState 6165930064: attempt #10; slept for 0.1; last result: failed (AssertionError Can not validate empty avro name)> │ └ <function BaseRetrying.iter at 0x16c7965f0> └ <Retrying object at 0x16f84a020 (stop=<tenacity.stop.stop_after_attempt object at 0x16f849b70>, wait=<tenacity.wait.wait_rand... File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 376, in iter result = action(retry_state) │ └ <RetryCallState 6165930064: attempt #10; slept for 0.1; last result: failed (AssertionError Can not validate empty avro name)> └ <function BaseRetrying._post_stop_check_actions.<locals>.exc_check at 0x16f6f8e50> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 418, in exc_check raise retry_exc.reraise() │ └ <function RetryError.reraise at 0x16c795c60> └ RetryError(<Future at 0x16fa4ff10 state=finished raised AssertionError>) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 185, in reraise raise self.last_attempt.result() │ │ └ <function Future.result at 0x102e37370> │ └ <Future at 0x16fa4ff10 state=finished raised AssertionError> └ RetryError(<Future at 0x16fa4ff10 state=finished raised AssertionError>) File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 451, in result return self.__get_result() └ None File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception └ None File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 478, in __call__ result = fn(*args, **kwargs) │ │ └ {} │ └ () └ <function IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry at 0x16f6f9000> File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 113, in append_with_retry self.table.append(pa_df) │ │ │ └ pyarrow.Table │ │ │ : int32 │ │ │ ---- │ │ │ : [[3,2,1]] │ │ └ <function Table.append at 0x16a8ba710> │ └ wid_9_eid_45_globalportid_(logicalOpId=Sort-operator-dee3ef66-be79-42c0-b06d-dc48ad732ab6,layerName=main,portId=0,isInternal=... └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object at 0x16f28f310> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py", line 984, in append tx.append(df=df, snapshot_properties=snapshot_properties) │ │ │ └ {} │ │ └ pyarrow.Table │ │ : int32 │ │ ---- │ │ : [[3,2,1]] │ └ <function Transaction.append at 0x16a8b8c10> └ <pyiceberg.table.Transaction object at 0x16f848460> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py", line 417, in append for data_file in data_files: └ <generator object _dataframe_to_data_files at 0x16f6747b0> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py", line 2627, in _dataframe_to_data_files yield from write_file( └ <function write_file at 0x16c755510> File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 621, in result_iterator yield _result_or_cancel(fs.pop()) │ │ └ <method 'pop' of 'list' objects> │ └ [] └ <function _result_or_cancel at 0x102e36d40> File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 319, in _result_or_cancel return fut.result(timeout) └ None File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 458, in result return self.__get_result() └ None File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception └ None File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) │ │ └ None │ └ None └ None File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py", line 2428, in write_parquet if (sanitized_schema := sanitize_column_names(table_schema)) != table_schema: │ │ └ Schema(NestedField(field_id=1, name='', field_type=IntegerType(), required=False), schema_id=0, identifier_field_ids=[]) │ └ Schema(NestedField(field_id=1, name='', field_type=IntegerType(), required=False), schema_id=0, identifier_field_ids=[]) └ <function sanitize_column_names at 0x147404940> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1355, in sanitize_column_names result = visit(schema.as_struct(), _SanitizeColumnsVisitor()) │ │ │ └ <class 'pyiceberg.schema._SanitizeColumnsVisitor'> │ │ └ <function Schema.as_struct at 0x14739a3b0> │ └ Schema(NestedField(field_id=1, name='', field_type=IntegerType(), required=False), schema_id=0, identifier_field_ids=[]) └ <function visit at 0x14725f760> File "/opt/anaconda3/envs/texera/lib/python3.10/functools.py", line 889, in wrapper return dispatch(args[0].__class__)(*args, **kw) │ │ │ └ {} │ │ └ (StructType(fields=(NestedField(field_id=1, name='', field_type=IntegerType(), required=False),)), <pyiceberg.schema._Sanitiz... │ └ (StructType(fields=(NestedField(field_id=1, name='', field_type=IntegerType(), required=False),)), <pyiceberg.schema._Sanitiz... └ <function singledispatch.<locals>.dispatch at 0x14725d5a0> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 835, in _ results.append(visitor.field(field, result)) │ │ │ │ │ └ IntegerType() │ │ │ │ └ NestedField(field_id=1, name='', field_type=IntegerType(), required=False) │ │ │ └ <function _SanitizeColumnsVisitor.field at 0x147404af0> │ │ └ <pyiceberg.schema._SanitizeColumnsVisitor object at 0x16fa4f220> │ └ <method 'append' of 'list' objects> └ [] File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1370, in field name=make_compatible_name(field.name), │ │ └ '' │ └ NestedField(field_id=1, name='', field_type=IntegerType(), required=False) └ <function make_compatible_name at 0x147404280> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1305, in make_compatible_name if not _valid_avro_name(name): │ └ '' └ <function _valid_avro_name at 0x147404790> File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1312, in _valid_avro_name assert length > 0, ValueError("Can not validate empty avro name") └ 0 AssertionError: Can not validate empty avro name Exception in thread port_storage_writer_thread_PortIdentity(id=0, internal=False): Traceback (most recent call last): File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/loguru/_logger.py", line 1251, in catch_wrapper return function(*args, **kwargs) File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py", line 70, in run self.post_stop() File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/runnables/port_storage_writer.py", line 51, in post_stop self.buffered_item_writer.close() File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 123, in close self._flush_buffer() File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 117, in _flush_buffer append_to_table_with_retry(df) File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 115, in append_to_table_with_retry append_with_retry() File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 336, in wrapped_f return copy(f, *args, **kw) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 475, in __call__ do = self.iter(retry_state=retry_state) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 376, in iter result = action(retry_state) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 418, in exc_check raise retry_exc.reraise() File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 185, in reraise raise self.last_attempt.result() File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 451, in result return self.__get_result() File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", line 478, in __call__ result = fn(*args, **kwargs) File "/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py", line 113, in append_with_retry self.table.append(pa_df) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py", line 984, in append tx.append(df=df, snapshot_properties=snapshot_properties) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py", line 417, in append for data_file in data_files: File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py", line 2627, in _dataframe_to_data_files yield from write_file( File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 621, in result_iterator yield _result_or_cancel(fs.pop()) File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 319, in _result_or_cancel return fut.result(timeout) File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 458, in result return self.__get_result() File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception File "/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py", line 2428, in write_parquet if (sanitized_schema := sanitize_column_names(table_schema)) != table_schema: File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1355, in sanitize_column_names result = visit(schema.as_struct(), _SanitizeColumnsVisitor()) File "/opt/anaconda3/envs/texera/lib/python3.10/functools.py", line 889, in wrapper return dispatch(args[0].__class__)(*args, **kw) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 835, in _ results.append(visitor.field(field, result)) File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1370, in field name=make_compatible_name(field.name), File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1305, in make_compatible_name if not _valid_avro_name(name): File "/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", line 1312, in _valid_avro_name assert length > 0, ValueError("Can not validate empty avro name") AssertionError: Can not validate empty avro name ``` -- 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]
