Я начинаю работать с парадигмой MapReduce с Pyspark, у меня возникла проблема, и я не знаю, является ли это ошибкой программирования или что я не должен делать это таким образом.
У меня есть данные, из которых я извлекаю следующую информацию с map
для каждой строки: (id, (date, length, counter))
, я сделал это таким образом, чтобы извлечь всю необходимую мне информацию из файла необработанных данных и отфильтровывать зашумленные строки, чтобы я не снова использовать файл необработанных данных. Кстати: счетчик изначально равен 1, и он предназначен для добавления в будущем reduceByKey
.
Теперь данные выглядят так:
data = [('45', ('28/5/2010', 0.63, 1)), ('43', ('21/2/2012', 2.166, 1)), ('9', ('12/1/2009', 2.33, 1))]
Во-первых, я я пытаюсь подсчитать количество пар ключ-значение, поэтому просто reduceByKey
добавляем счетчики, я пытался сделать это следующим образом: data.reduceByKey(lambda a,b: a[2] + b[2])
, который выдает следующую ошибку TypeError: 'int' object is not subscriptable
.
Если a
и b
должны получить значение пары, элемент 2
должен иметь счетчик, я не могу обойти его. Лучше ли несколько раз отобразить файл необработанных данных, каждый раз извлекая другое необходимое значение? Должен ли я отображать эту data
переменную, извлекающую пары (key, value)
каждый раз, со значением, необходимым из кортежа? Просто я делаю ошибку в программировании?
Любое руководство приветствуется, спасибо!