You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Yicong Huang (Jira)" <ji...@apache.org> on 2026/02/04 01:07:00 UTC

[jira] [Created] (SPARK-55349) Consolidate pandas-to-Arrow conversion utilities in serializers

Yicong Huang created SPARK-55349:
------------------------------------

             Summary: Consolidate pandas-to-Arrow conversion utilities in serializers
                 Key: SPARK-55349
                 URL: https://issues.apache.org/jira/browse/SPARK-55349
             Project: Spark
          Issue Type: Sub-task
          Components: PySpark
    Affects Versions: 4.2.0
            Reporter: Yicong Huang



The pandas UDF serializers contain significant code duplication for converting pandas data to Arrow format. Multiple `_create_batch` and `_create_array` methods exist across different serializer classes with nearly identical logic:

{code:python}
# ArrowStreamPandasSerializer
def _create_batch(self, series):
    arrs = []
    for s, t in series:
        # ... conversion logic ...
    return pa.RecordBatch.from_arrays(arrs, ...)

# ArrowStreamPandasUDFSerializer  
def _create_batch(self, series):
    # ... similar conversion logic ...

# ArrowStreamPandasUDTFSerializer
def _create_array(self, series, spark_type):
    # ... conversion logic ...
{code}

This duplication makes the code harder to maintain and increases the risk of inconsistent behavior.

Proposal: Extract the common conversion logic into a dedicated `PandasToArrowConversion` class in `conversion.py`:

{code:python}
class PandasToArrowConversion:
    @classmethod
    def dataframe_to_batch(cls, data, schema, ...) -> pa.RecordBatch: ...
    
    @classmethod
    def series_to_array(cls, series, spark_type, ...) -> pa.Array: ...
{code}

This reduces code duplication and provides a single, well-tested conversion path.




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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org