Ich versuche, die reduceByKey Funktion von pyspark auf Daten des Formats (([a,b,c], 1), ([a,b,c], 1), ([a,d,b,e], 1), ...
Eine Liste als Schlüssel für PySpark des reduceByKey
Es scheint pyspark in normalen Schlüsseln ein Array als Schlüssel akzeptiert nicht zu nennen, Wertminderung von einfach Anwendung .reduceByKey (hinzufügen).
Ich habe bereits versucht zuerst das Array in eine Zeichenfolge zu konvertieren, durch .map((x,y): (str(x),y))
, aber das funktioniert nicht, da Nachbearbeitung der Zeichenfolgen zurück in Arrays zu langsam ist.
Gibt es eine Möglichkeit, ich kann Pyspark verwenden Sie das Array als Schlüssel oder verwenden Sie eine andere Funktion, um die Zeichenfolgen zurück in Arrays schnell zu konvertieren?
hier ist der zugehörige Fehlercode
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
ZUSAMMENFASSUNG:
input: x =[([a,b,c], 1), ([a,b,c], 1), ([a,d,b,e], 1), ...]
gewünschten Ausgangs: y =[([a,b,c], 2), ([a,d,b,e], 1),...]
so dass I a
von y[0][0][0]
und 2
von y[0][1]
danke das hilft wirklich viel mit meinem Verständnis von Funken im Allgemeinen –
Gern geschehen. BTW Es ist nicht speziell Spark. Dasselbe gilt, wenn Sie einfache Python-'dicts' oder' sets' verwenden. – zero323