How to correctly transform a Polars DataFrame to a pySpark DataFrame?
More specifically, the conversion methods which I've tried all seem to have problems parsing columns containing arrays / lists.
create spark dataframe
data = [{"id": 1, "strings": ['A', 'C'], "floats": [0.12, 0.43]},
{"id": 2, "strings": ['B', 'B'], "floats": [0.01]},
{"id": 3, "strings": ['C'], "floats": [0.09, 0.01]}
]
sparkdf = spark.createDataFrame(data)
convert it to polars
import pyarrow as pa
import polars as pl
pldf = pl.from_arrow(pa.Table.from_batches(sparkdf._collect_as_arrow()))
try to convert back to spark dataframe (attempt 1)
spark.createDataFrame(pldf.to_pandas())
TypeError: Can not infer schema for type: <class 'numpy.ndarray'>
TypeError: Unable to infer the type of the field floats.
try to convert back to spark dataframe (attempt 2)
schema = sparkdf.schema
spark.createDataFrame(pldf.to_pandas(), schema)
TypeError: field floats: ArrayType(DoubleType(), True) can not accept object array([0.12, 0.43]) in type <class 'numpy.ndarray'>
relevant: How to transform Spark dataframe to Polars dataframe?