Ich kämpfe mit einem Pyspark-Auftrag. Ich bin verpflichtet, eine Summe aller Anzeigezahlen pro Kanal zu erhalten. Ich habe 2 Sätze von Dateien: 1 zeigt die Show und Ansichten pro Show, die andere zeigt die Shows und welchen Kanal sie angezeigt werden (kann mehrere sein).Pyspark Tupel-Objekt hat keine Attributaufteilung
Ich habe eine Join-Operation auf den 2-Dateien durchgeführt und das Ergebnis sieht aus wie ..
[(u'Surreal_News', (u'BAT', u'11')),
(u'Hourly_Sports', (u'CNO', u'79')),
(u'Hourly_Sports', (u'CNO', u'3')),
Ich muss jetzt den Kanal als Schlüssel extrahieren und dann denke ich, eine reduceByKey tun, um die Summe zu erhalten Ansichten für die Kanäle.
Ich habe diese Funktion geschrieben, um den Chan als Schlüssel mit den Ansichten neben zu extrahieren, die ich dann eine reduceByKey-Funktion verwenden könnte, um die Ergebnisse zu summieren. Jedoch wenn ich versuche, mit collect Ergebnisse von unten Funktion anzuzeigen() Ich erhalte ein „Attribut:‚tuple‘Objekt hat kein Attribut‚split‘“ Fehler
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)
Danke für die schnelle Antwort Jeff. Wenn ich diesen Code in meiner Funktion verwende, bekomme ich den Fehler "TypeError: 'type' Objekt ist nicht iterierbar". Mein Python-Wissen ist nicht großartig, deshalb werde ich ein bisschen mehr online recherchieren und einige Pyspark-Beispiele finden, die Daten durchlaufen. Aber was ist das Objekt, das nicht iterierbar ist? Ich dachte, dass meine Funktion nur eine einzige Zeile einer anderen RDD als Argument nimmt, also warum sagt sie, dass sie nicht iterierbar ist? – chucknor
Ist die 'your_list' in Ihrem Beispiel das Argument, das meine Funktion annimmt, also in meinem Fall 'show_chan_views'? Wenn ich den folgenden Code versuche, bekomme ich den Fehler in Zeile 3 von 'Zu viele Werte zum Entpacken'. In [96]: def extract_chan_views (show_chan_views): ....: für Artikel in show_chan_views: ....: first_index, second_index = Artikel ....: first_sub_index, second_sub_index = second_index ....: return (first_sub_index, second_sub_index) – chucknor
Der erste Fehler, den Sie bekommen, sagt uns, dass alles, was Sie in der 'for' -Schleife durchgehen wollen, nicht durch iteriert werden kann. Überprüfe, was es zuerst ist. Der zweite Fehler bedeutet, dass Sie versuchen, zum Beispiel zwei Variablen zu entpacken, wenn Ihr Objekt drei hat. – Jeff