why rdd.filter is返回空rdd

yk9xbfzb  于 2021-05-17  发布在  Spark
关注(0)|答案(2)|浏览(437)

我正在试图找出rdd.filter返回空rdd的原因。下面是代码片段:其思想是将数据集(rdd)拆分为两个独立的数据集,称为lower和higher。这些命令在一个循环中执行,这个循环会逐渐减少数据集。第一轮工作如预期,然而,一段时间后rdd.filter返回空rdd,尽管它应该是空的。我添加了一些代码来隔离问题。输出如下所示。正如您首先看到的,rdd包含7个对象,这7个对象中的3个应该包含在下面的部分中。但是,函数返回空rdd。知道为什么会出问题吗?

items = rdd.collect()
        print(items)
        print("Remove items where key is leq:", x_key, "index !=", x_index)

        lower  = rdd.filter(lambda x: x[0] <=x_key and x[1] != x_index)
        items = lower.collect()
        print('Lower:', items)

输出:

[(7, 1), (5, 2), (8, 3), (4, 4), (9, 5), (10, 10), (4, 11)]
       Remove items where key is leq: 7 index != 1
       Lower: []
ds97pgxw

ds97pgxw1#

我觉得你上面的代码很好。我运行了上面相同的代码,得到了非空结果(下图)。如果你仍然认为这是你有错误的部分,那么请你提供更多的信息,看看是怎么回事。

jaxagkaj

jaxagkaj2#

有一个小错误:

print("Remove items where key is leq:", x_key, "index !=", x_index)

应该

print("Select items where key is leq:", x_key, "index !=", x_index)

相关问题