Я новичок в Python.Я также новичок в pysaprk.Я пытаюсь запустить код, который принимает кортеж, который выглядит как (id , (span, mention))
для выполнения .map(lambda (id, (span, text)): (id, text))
.
Код, с которым я работаю:
m = text\
.map(lambda (id, (span, text)): (id, text))\
.mapValues(lambda v: ngrams(v, self.max_ngram))\'''error triggered here'''
.flatMap(lambda (target, tokens): (((target, t), 1) for t in tokens))\
Вот как форматируются исходные данные (id, source, span, text)
:
{'_id': u'en.wikipedia.org/wiki/Cerambycidae',
'source': 'en.wikipedia.org/wiki/Plinthocoelium_virens',
'span': (61, 73),
'text': u'"Plinthocoelium virens" is a species of beetle in the family Cerambycidae.'},
{'_id': u'en.wikipedia.org/wiki/Dru_Drury',
'source': 'en.wikipedia.org/wiki/Plinthocoelium_virens',
'span': (20, 29),
'text': u'It was described by Dru Drury in 1770.'}]
Я получаю эту ошибку:
for k, v in iterator:
TypeError: tuple indices must be integers, not str
Я знаю, что groupByKey работает с pairwiseRDD, поэтому я хотел бы знать, какправильно выполнить groupByKey для решения этой проблемы?
Любая помощь или руководство будут по-настоящему оценены.
Я использую Python 2.7 и pyspark 2.3.0.
Спасибо завперед.