我有一个RDD对象,如:
x=[[1,2,3],[4,5,6,7],[7,2,6,9,10]..]
我想从中获取一个列表,它等于每个列表中元素的大小:
y=[3,4,5..]
Where 3=len([1,2,3], 4=len([4,5,6,7]), 5=len([7,2,6,9,10])...
此语法适用于Python:
[ len(y) for y in yourlist ]
,如何迭代RDD
答案 0 :(得分:2)
您只需在RDD中执行map
操作:
x = [[1,2,3], [4,5,6,7], [7,2,6,9,10]]
rdd = sc.parallelize(x)
rdd_length = rdd.map(lambda x: len(x))
rdd_length.collect()
# [3, 4, 5]
答案 1 :(得分:0)
从RDD创建一个Dataframe,然后您可以使用size()
sql函数。
df = spark.createDataFrame([([1, 2, 3],),([4,5,6,7],),([7,2,6,9,10],)], ['data'])
df.select(size(df.data)).collect()
#[Row(size(data)=3), Row(size(data)=4), Row(size(data)=5)]
您可以从原始RDD创建一个Dataframe,如下所示:
from pyspark.sql import Row
rowrdd = rdd.map(lambda x: Row(data=x))
df = spark.createDataFrame(rowrdd)
...