我正在将Spark 2.3.1与Python 3.7.0一起预先打包到Spark发行版中。我在Range对象上应用了过滤器功能,但我得到的是Filter对象,而不是RDD值集合。
我应该如何从Filter对象获取值?
>>> l = range(1,100)
>>> f = filter(lambda i: i%2 == 0, l)
>>> f
<filter object at 0x0000....>
答案 0 :(得分:1)
您未在代码中使用Spark。
如果您想要列表而不是RDD:
>>> l = range(1,100) # range object
>>> f = filter(lambda i: i%2 == 0, l) # filter object
>>> result = list(f)
>>> type(result)
<type 'list'>
>>> result
[2, 4, 6, ...]
如果需要RDD,请从RDD对象开始:
>>> rdd = sc.parallelize(range(1,100))
>>> rdd2 = rdd.filter(lambda x: x % 2 == 0)
>>> type(rdd2)
<class 'pyspark.rdd.RDD'>
>>> rdd2.collect()
[2, 4, 6, ...]