Pyspark RDD -过滤和未过滤的数据



我从spark会话创建了一个RDD。我的数据是syslog格式的。我想将前缀为<128>1的行过滤为有效行,将不满足条件的行过滤为无效行。

rdd2=rdd1.filter(lambda rec: rec.startswith('<128>1') or rec.startswith('<134>1'))

我如何得到无效的行,以及在同一函数?参考:https://sparkbyexamples.com/pyspark/pyspark-where-filter/高阶函数火花滤波器

您可以使用有效条件的否定(not):

valid = rdd1.filter(lambda rec: rec.startswith('<128>1') or rec.startswith('<134>1'))
invalid = rdd1.filter(lambda rec: not(rec.startswith('<128>1') or rec.startswith('<134>1')))

最新更新