Я пытаюсь вызвать функцию reduceByKey из pyspark данных формата (([a,b,c], 1), ([a,b,c], 1), ([a,d,b,e], 1), ...
список в качестве ключа для reduceByKey PySpark в
Кажется pyspark не будет принимать массив в качестве ключа в нормальном ключе, снижения стоимости путем простого применение .reduceByKey (добавить).
Я уже пробовал сначала преобразовать массив в строку, .map((x,y): (str(x),y))
, но это не работает, потому что пост-обработка строк обратно в массивы происходит слишком медленно.
Есть ли способ заставить pyspark использовать массив в качестве ключа или использовать другую функцию для быстрого преобразования строк обратно в массивы?
здесь является ассоциированным код ошибки
File "/home/jan/Documents/spark-1.4.0/python/lib/pyspark.zip/pyspark/shuffle.py", line 268, in mergeValues
d[k] = comb(d[k], v) if k in d else creator(v)
TypeError: unhashable type: 'list'
enter code here
СУЩНОСТЬ:
вход: x =[([a,b,c], 1), ([a,b,c], 1), ([a,d,b,e], 1), ...]
требуемый выход: y =[([a,b,c], 2), ([a,d,b,e], 1),...]
таким образом, чтобы я мог получить доступ к a
по y[0][0][0]
и 2
от y[0][1]
спасибо, что очень помогает в моем понимании искры вообще –
Добро пожаловать. BTW В частности, это не Spark. То же самое происходит, когда вы используете простые пиктоны 'dicts' или' sets'. – zero323