我想知道如何将 Spark 数据帧转换为 Polars 数据帧。
假设我在 PySpark 上有这段代码:
df = spark.sql('''select * from tmp''')
我可以使用以下命令轻松地将其转换为 pandas 数据框.toPandas
。
极坐标中有类似的东西吗,因为我需要获取极坐标数据帧以进行进一步处理?
Context
Pyspark 使用箭头转换为 pandas。 Polars 是箭头存储器的抽象。因此我们可以劫持 Spark 内部使用的 API 创建箭头数据并使用它来创建极坐标DataFrame
.
TLDR
给定一个 Spark 上下文,我们可以这样写:
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] │
└───────┴────────────┘
序列化步骤
这实际上会比toPandas
由...提供spark
本身,因为它保存了额外的副本。
toPandas()
将导致此序列化/复制步骤:
spark-memory -> arrow-memory -> pandas-memory
根据提供的查询,我们有:
spark-memory -> arrow/polars-memory
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)