我是新来的火花。我需要一个能在整个RDD上工作的函数。不在map()的RDD上的每个元素上。
例:
JavaRDD<String> str= sc.parallelize(list);
str.map(func);
现在我想在str上执行整个str而不是str的每个元素。
有什么能达到我的目的吗?
答案 0 :(得分:0)
我真的不明白你想要达到的目的,但我只想说你可以在RDD
上应用两种类型的操作,这里是{{3}的简单解释}}
转换,从现有数据集创建新数据集,以及在数据集上运行计算后将值返回给驱动程序的操作。例如,map是一个转换,它通过一个函数传递每个数据集元素,并返回一个表示结果的新RDD。另一方面,reduce是一个使用某个函数聚合RDD的所有元素并将最终结果返回给驱动程序的动作
我认为您必须使用action
类型的操作,例如reduce
或count
...分机
希望这对您有所帮助,否则请编辑问题并准确解释您想要实现的目标。
答案 1 :(得分:0)
不确定您要实现的目标,但可以使用在整个数据分区上运行的mapPartition
答案 2 :(得分:0)
我想建议让它转换为DataFrame!
from pyspark.sql import toDF
df = rdd.toDF(['column', 'value'])
它解决了我的问题,或者请告诉我为什么你不想使用DataFrame对象