Я создал список кортежей в моих данных, который выглядит примерно так:
rdd.take(10)
[(u'AK', 224), (u'AK', 696), (u'AK', 278), (u'AK', 187), (u'AK', 842), (u'AK', 589), (u'AK', 253), (u'AK', 974), (u'AK', 37), (u'AK', 132)]
С этими данными я хочу использовать функции mapValues
и reduceByKey
, чтобы по существу добавить все мои данныедля АК вместе. Я понимаю, что это все в юникоде, поэтому я могу преобразовать свои данные, выполнив что-то вроде этого:
states = rdd.mapValues(lambda x: int(x))
states.take(10)
[(u'AK', 224), (u'AK', 696), (u'AK', 278), (u'AK', 187), (u'AK', 842), (u'AK', 589), (u'AK', 253), (u'AK', 974), (u'AK', 37), (u'AK', 132)]
Однако, я продолжаю получать ошибку, когда пытаюсь реализовать свою функцию reducebyKey
. Что:
states = states.reduceByKey(lambda x, y: (x+y)).collect()
Я получаю сообщение об ошибке:
File "<stdin>", line 1, in <lambda>
ValueError: invalid literal for int() with base 10: '1,643'
Может кто-нибудь сказать мне, что происходит, и оказать помощь, пожалуйста? : (
ОБНОВЛЕНИЕ:
Итак, я выяснил, что некоторые значения ключей в моем списке кортежей будут иметь значение, например, «1529». Мне нужно удалить запятую, чтобыпреобразовать это в int. Сейчас я просто пытаюсь найти хороший метод для этого. Есть ли способ, которым я могу использовать .replace (",", "") в функции отображения, чтобы избавиться от него?