Я борюсь с назначением Pyspark. Мне нужно получить сумму всех номеров просмотра на каждый канал. У меня есть 2 набора файлов: 1 показывает показ и просмотры на показ другого, показывающего шоу и на каком канале они отображаются (может быть несколько).Объект Pyspark tuple не имеет атрибута split
Я выполнил операцию объединения на 2 файлов и результат выглядит ..
[(u'Surreal_News', (u'BAT', u'11')),
(u'Hourly_Sports', (u'CNO', u'79')),
(u'Hourly_Sports', (u'CNO', u'3')),
мне теперь нужно извлечь канал в качестве ключа, а затем я думаю сделать reduceByKey, чтобы получить сумму просмотров для каналов.
Я написал эту функцию, чтобы извлечь chan как ключ с представлениями рядом, и я мог бы затем использовать функцию reduceByKey для суммирования результатов. Однако, когда я пытаюсь отобразить результаты ниже функции с Collect() я получаю «AttributeError:„кортеж“объект не имеет атрибута" раздвоение»ошибка
def extract_chan_views(show_chan_views):
key_value = show_chan_views.split(",")
chan_views = key_value[1].split(",")
chan = chan_views[0]
views = int(chan_views[1])
return (chan,views)
Спасибо за быстрый ответ Джефф. Когда я использую этот код в своей функции, я получаю сообщение об ошибке: «ТипError:« type »object is is iterable». Мои знания Python невелики, поэтому я сделаю немного больше исследований в Интернете и найду некоторые примеры Pyspark, которые будут проходить через данные. Но что такое объект, который не является итерируемым. Я думал, что моя функция принимает только одну строку другого RDD в качестве аргумента, поэтому почему он говорит, что это не повторяется? – chucknor
Является ли «ваш_list» в вашем примере упоминанием аргумент, который выполняет моя функция, поэтому в моем случае «show_chan_views»? Когда я пытаюсь использовать приведенный ниже код, я получаю ошибку в строке 3 «Слишком много значений для распаковки». В [96]: def extract_chan_views (show_chan_views): ....: для элемента в show_chan_views: ....: first_index, second_index = item ....: first_sub_index, second_sub_index = second_index ....: return (first_sub_index, second_sub_index) – chucknor
Итак, первая ошибка, которую вы получаете, говорит нам о том, что все, что вы пытаетесь пройти в цикле 'for', не может повторяться. Сначала проверьте, что это такое. Вторая ошибка означает, что вы пытаетесь распаковать, например, две переменные, когда ваш объект имеет три. – Jeff