countByValue (): Возвращает счетчик каждого уникального значения в этом СДР в виде словаря пар (значение, количество), и для доступа к этому словарю вам необходимо .items()
.Эту часть вы пропустили.
Метод 1: Зеркально отражает ваш метод
sorted(sc.parallelize([1,2,3,4,5,6,7,8,2,4,2,1,1,1,1,1]).countByValue().items())
[(1, 6), (2, 3), (3, 1), (4, 2), (5, 1), (6, 1), (7, 1), (8, 1)]
Метод 2: Это более элементарно.
X_RDD = sc.parallelize([1,2,3,4,5,6,7,8,2,4,2,1,1,1,1,1])
Y_MAP = X_RDD.map(lambda m:(m,1))
x = Y_MAP.groupByKey().mapValues(lambda x:list(x))
x.mapValues(lambda x:len(x)).collect()
[(1, 6), (2, 3), (3, 1), (4, 2), (5, 1), (6, 1), (7, 1), (8, 1)]