我从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')))