我想知道如何将Spark数据帧转换为极点数据帧.

假设我在PySpark上有这样的代码:

df = spark.sql('''select * from tmp''')

我可以很容易地使用.toPandas将其转换为Pandas 数据帧. 极点也有类似的东西吗,因为我需要得到一个极点数据帧以供进一步处理?

推荐答案

语境

皮斯帕克用箭变成了Pandas .极点是对箭形记忆的抽象.所以我们可以劫持Spark在内部使用的API来创建箭头数据,并使用它来创建极点DataFrame.

TLDR

给出一个spark 上下文,我们可以写道:

import pyarrow as pa
import polars as pl

sql_context = SQL语境(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]     │
└───────┴────────────┘

序列化步骤

这实际上会比spark本身提供的toPandas更快,因为它节省了一个额外的副本.

toPandas()将导致此序列化/复制步骤:

spark-memory -> arrow-memory -> pandas-memory

对于给定的查询,假设我们拥有:

spark-memory -> arrow/polars-memory

Python相关问答推荐

从流程获取定期更新

这些变量是否相等,因为它们引用相同的实例,尽管它们看起来应该具有不同的值?

判断两极中N(N 2)列水平是否相等

Pandas使用过滤器映射多列

根据多列和一些条件创建新列

如何在Python中增量更新DF

如何使用上下文管理器创建类的实例?

Python中是否有方法从公共域检索搜索结果

Python中的负前瞻性regex遇到麻烦

Python中MongoDB的BSON时间戳

理解Python的二分库:澄清bisect_left的使用

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

海运图:调整行和列标签

如何在虚拟Python环境中运行Python程序?

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

NumPy中条件嵌套for循环的向量化

如何合并两个列表,并获得每个索引值最高的列表名称?

lityter不让我输入左边的方括号,'

在极中解析带有数字和SI前缀的字符串

OpenGL仅渲染第二个三角形,第一个三角形不可见