火花 > = 2.3.0
从Spark 2.3.0开始,可以使用Pandas
Series或
Dataframe按分区或组使用。参见例如:
- 在PySpark中的GroupedData上应用UDF(具有可运行的python示例
- 高效的字符串后缀检测
Spark <2.3.0
创建本地PySpark的自然方法是什么
哪有这回事。Spark分布式数据结构不能嵌套,或者您更喜欢另一个视角,则不能嵌套操作或转换。
或Pandas Dataframe
这相对容易,但是您至少要记住以下几点:
- 熊猫和Spark Dataframe甚至在远程上都不等效。这些是不同的结构,具有不同的属性,通常您不能用另一种替换。
- 分区可以为空。
看来您正在传递字典。请记住,基本的Python字典是无序的(
collections.OrderedDict
例如,与之不同)。因此,传递列可能无法按预期方式工作。import pandas as pd
rdd = sc.parallelize([
{“x”: 1, “y”: -1},
{“x”: -3, “y”: 0},
{“x”: -0, “y”: 4}
])def combine(iter):
rows = list(iter)
return [pd.Dataframe(rows)] if rows else []rdd.mapPartitions(combine).first()
x y
0 1 -1



