Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在pyspark中的iterable RDD上使用筛选器_Python_List_Filter_Pyspark_Iterable - Fatal编程技术网

Python 无法在pyspark中的iterable RDD上使用筛选器

Python 无法在pyspark中的iterable RDD上使用筛选器,python,list,filter,pyspark,iterable,Python,List,Filter,Pyspark,Iterable,我试图应用一个函数,该函数根据另一个数据集中的数据范围过滤掉数据集中的某些值。我已经执行了一些groupBys和Join,因此我要传递到函数中的参数的格式有两个ITerable,如下所示: g1 = g0.map(lambda x: timefilter(x[0])) 其中x[0]是,) 当我进入函数timefilter时,我现在需要能够根据x[0]中的值过滤掉x[1]中的值。但是当我尝试以下操作时(在twoList和twoRDD上,尽管我只是在这里显示twoList): 它给了我以下错误:A

我试图应用一个函数,该函数根据另一个数据集中的数据范围过滤掉数据集中的某些值。我已经执行了一些groupBys和Join,因此我要传递到函数中的参数的格式有两个ITerable,如下所示:

g1 = g0.map(lambda x: timefilter(x[0]))
其中x[0]是
,)

当我进入函数
timefilter
时,我现在需要能够根据x[0]中的值过滤掉x[1]中的值。但是当我尝试以下操作时(在
twoList
twoRDD
上,尽管我只是在这里显示twoList):

它给了我以下错误:
AttributeError:'ResultIterable'对象没有属性'filter'
然后是一系列的错误


似乎我不能在任何iterables格式上使用过滤器,但我觉得我遗漏了一些非常简单的东西。函数中是否缺少一个转换?

结果表明,不可能对iterable RDD进行过滤,因此我只使用了python内置的过滤函数。大致如下:
filter(oneList,twolest中的lambda x:x[1])

证明在可移植RDD上进行过滤是不可能的,所以我只使用了python内置的filter函数。大致如下:
filter(oneList,twolest中的lambda x:x[1])

显然
RDDList
不是RDD的列表。所以你不能做你要做的事情。@fl00r我将Iterable RDD转换成函数中的列表。在调试过程中,我刚刚返回了“returnonelist”,在g1上做了一个collect,它打印出了一个列表列表,所以这个部分似乎工作正常。我无法理解为什么不能将列表(RDD)视为列表并对其进行筛选,因为python中没有
list.filter()
。您可以尝试列表理解,例如,
[x为x,如果x>=0]
显然
RDDList
不是RDD列表。所以你不能做你要做的事情。@fl00r我将Iterable RDD转换成函数中的列表。在调试过程中,我刚刚返回了“returnonelist”,在g1上做了一个collect,它打印出了一个列表列表,所以这个部分似乎工作正常。我无法理解为什么不能将列表(RDD)视为列表并对其进行筛选,因为python中没有
list.filter()
。您可以尝试列表理解,例如,
[x在lst中表示x,如果x>=0]
def timefilter(RDDList):
    oneList = list(RDDList[0])
    twoList = list(RDDList[1])
    twoRDD = RDDList[1]
    test = twoList.filter(lambda x: x[4]=='helloworld')
    return test