如何从PySpark

时间:2019-08-21 08:25:10

标签: apache-spark pyspark

我正在将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....>

1 个答案:

答案 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, ...]