Umformen / Schwenken von Daten in Spark RDD und / oder Spark DataFrames

Ich habe einige Daten im folgenden Format (entweder RDD oder Spark DataFrame):

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)

 rdd = sc.parallelize([('X01',41,'US',3),
                       ('X01',41,'UK',1),
                       ('X01',41,'CA',2),
                       ('X02',72,'US',4),
                       ('X02',72,'UK',6),
                       ('X02',72,'CA',7),
                       ('X02',72,'XX',8)])

# convert to a Spark DataFrame                    
schema = StructType([StructField('ID', StringType(), True),
                     StructField('Age', IntegerType(), True),
                     StructField('Country', StringType(), True),
                     StructField('Score', IntegerType(), True)])

df = sqlContext.createDataFrame(rdd, schema)

Was ich tun möchte, ist, die Daten 'umzugestalten', bestimmte Zeilen in Country (insbesondere US, UK und CA) in Spalten umzuwandeln:

ID    Age  US  UK  CA  
'X01'  41  3   1   2  
'X02'  72  4   6   7   

Im Wesentlichen brauche ich etwas in der Art von Pythonspivot Arbeitsablauf

categories = ['US', 'UK', 'CA']
new_df = df[df['Country'].isin(categories)].pivot(index = 'ID', 
                                                  columns = 'Country',
                                                  values = 'Score')

Mein Datensatz ist ziemlich groß, also kann ich nicht wirklichcollect() und nehmen die Daten in den Speicher auf, um die Umformung in Python selbst durchzuführen. Gibt es eine Möglichkeit, Pythons @ zu konvertiere.pivot() in eine aufrufbare Funktion, während entweder ein RDD oder ein Spark-DataFrame zugeordnet wird? Jede Hilfe wäre dankbar!

Antworten auf die Frage(12)

Ihre Antwort auf die Frage