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!