Spark提供了几种实现消耗并返回Pandas DataFrames的UDF的不同方法。我目前正在使用共组版本,它以两个(共同分组的) Pandas DataFrames作为输入,并返回第三个。
为了在DataFrames和Pandas DataFrames之间进行有效的转换,Spark使用Apache内存布局,但是仍然需要从Arrow转换到Pandas并返回。我真的很想直接访问Arrow数据,因为这就是我最终将如何处理UDF中的数据(使用极地)。
从星火-> Arrow,->,Pandas -> Arrow (北极星)进场的路上走,回来的时候反向走,似乎是浪费的。
发布于 2022-11-04 15:56:32
import pyarrow as pa
import polars as pl
sql_context = SQLContext(spark)
data = [('James',[1, 2]),]
spark_df = sql_context.createDataFrame(data=data, schema = ["name","properties"])
df = pl.from_arrow(pa.Table.from_batches(spark_df._collect_as_arrow()))
print(df)shape: (1, 2)
┌───────┬────────────┐
│ name ┆ properties │
│ --- ┆ --- │
│ str ┆ list[i64] │
╞═══════╪════════════╡
│ James ┆ [1, 2] │
└───────┴────────────┘https://stackoverflow.com/questions/71606278
复制相似问题