作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 myRDD
的 pyspark.rdd.PipelinedRDD
。这是其示例内容:
[((111, u'BB', u'A'), (444, u'BB', u'A')),
((222, u'BB', u'A'), (888, u'BB', u'A')),
((333, u'BB', u'B'), (999, u'BB', u'A')),...]
我需要删除第三列值不一致的所有条目。预期结果是这样的:
[((111, u'BB', u'A'), (444, u'BB', u'A')),
((222, u'BB', u'A'), (888, u'BB', u'A')),...]
我该怎么做?
最佳答案
您可以使用带有 lambda 表达式的过滤器来检查每个元组对的第三个元素是否相同,例如:
l = [((111, u'BB', u'A'), (444, u'BB', u'A')),
((222, u'BB', u'A'), (888, u'BB', u'A')),
((333, u'BB', u'B'), (999, u'BB', u'A'))]
rdd = sc.parallelize(l)
rdd = rdd.filter(lambda x: x[0][2] == x[1][2])
result = rdd.collect()
print result
>>> [((111, u'BB', u'A'), (444, u'BB', u'A')), ((222, u'BB', u'A'), (888, u'BB', u'A'))]
为了回答您的后续评论,请记住,lambda 只是一个函数,如果您有更复杂的逻辑,您可以将其写为函数。你可以这样做:
def do_stuff(x):
if (x[0][2] == 'C') or (x[1][2] == 'C'):
return x
else:
if x[0][2] == x[1][2]: return x
return None
rdd = rdd.map(do_stuff).filter(lambda x: x is not None)
res = rdd.collect()
关于python - 如何从 pyspark.rdd.PipelinedRDD 中过滤掉值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46949953/
我正在编写一个快速的 preg_replace 来从 CSS 中删除注释。 CSS 注释通常有这样的语法: /* Development Classes*/ /* Un-comment me for
使用 MySQL,我有三个表: 项目: ID name 1 "birthday party" 2 "soccer match" 3 "wine tasting evening" 4
我是一名优秀的程序员,十分优秀!