Цель: найти самую высокую категорию видео из набора данных YouTube
Использование: Pyspark shell
Ожидается: категория с количеством раз, которое она появляется
Actual: Ошибка при использовании reduBykey в качестве IndexError: список индексов выходит за пределы диапазона
Я попробовал следующий код:
data="/Users/sk/Documents/GitRepository/Udemy_BigData_spark/1.txt"
input = sc.textFile(data)
results = input.map(lambda x: (x.split(‘\t')[3].encode("utf-8").replace('"', '').replace("'", '')))results.take(20)
Это дает следующие результаты:
['Comedy', 'Comedy', 'Entertainment', 'People & Blogs', 'People &
Blogs', 'Music', 'Comedy', 'People & Blogs', 'Entertainment',
'Entertainment', 'Entertainment', 'Entertainment', 'Entertainment',
'Entertainment', 'Entertainment', 'Entertainment', 'Entertainment',
'Entertainment', 'Entertainment', 'Entertainment']
results=results.map(lambda x: (x,1))
Это дает следующий результат:
[('Comedy', 1), ('Comedy', 1), ('Entertainment', 1), ('People & Blogs', 1), ('People & Blogs', 1), ('Music', 1), ('Comedy', 1), ('People & Blogs', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1), ('Entertainment', 1)]
results=results.reduceByKey(lambda x, y: x + y)
results.take(20)
Это дает огромную ошибку: (
Я хочу, чтобы он показал мне результат, как показано ниже:
(179049,Music), (127674,Entertainment), (87818,Comedy), (73293,Film &
Animation), (67329,Sports)