У меня есть RDD, который я читаю из файла с текущим форматом
199.72.81.55 - - [01 / Jul / 1995: 00: 00: 01 -0400] "GET / history / apollo / HTTP / 1.0" 200 6245
unicomp6.unicomp.net - - [01 / Jul / 1995: 00: 00: 06 -0400] "GET / shuttle / countdown / HTTP / 1.0" 200 3985
...
Я получил нужные поля с этим фрагментом кода:
rdd = rdd.map(lambda x : (x.split(" ")[0], x.split(" ")[3][1:12], x.split(" ")[5], x.split(" ")[7], x.split(" ")[8]))
и теперь, добавив, я получил эту настройку
rdd.take(4)
[('199.72.81.55', '01/Jul/1995', '"GET', 'HTTP/1.0"', '200'), ('unicomp6.unicomp.net', '01/Jul/1995', '"GET', 'HTTP/1.0"', '200'), ('199.120.110.21', '01/Jul/1995', '"GET', 'HTTP/1.0"', '200'),('199.120.110.21', '01/Jul/1995', '"GET', 'HTTP/1.0"', '200')]
Мне нужны уникальные хосты для этого файла, поэтому я сделал это:
rdd2 = rdd.map(lambda x : x[0])
и я получил это:
rdd2(take(4))
['199.72.81.55', 'unicomp6.unicomp.net', '199.120.110.21', '199.120.110.21']
пока, так хорошо
но теперь у меня проблема, которую я не могу понять
h = set()
rdd2.map(lambda x: h.add(x)) #line with error, i suppose
print(h)
{} # the set is empty, i have no idea why my set isn't adding the values to the set
я ожидаю, что это набор с уникальными значениями, такими как:
{'199.72.81.55', 'unicomp6.unicomp.net', '199.120.110.21'}
может кто-нибудь указать мне, почему лямбда-добавление значения к набору не работает