Ich komme aus dem Pandas-Hintergrund und bin es gewohnt, Daten aus CSV-Dateien in einen Datenrahmen zu lesen und dann einfach die Spaltennamen mit dem einfachen Befehl in etwas Nützliches zu ändern:
df.columns = new_column_name_list
Dies funktioniert jedoch nicht in pyspark-Datenrahmen, die mit sqlContext erstellt wurden. Die einzige Lösung, die ich finden könnte, um dies leicht zu tun, ist die folgende:
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', inferschema='true', delimiter='\t').load("data.txt")
oldSchema = df.schema
for i,k in enumerate(oldSchema.fields):
k.name = new_column_name_list[i]
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', delimiter='\t').load("data.txt", schema=oldSchema)
Dies bedeutet im Grunde, die Variable zweimal zu definieren und zuerst auf das Schema zu schließen, dann die Spaltennamen umzubenennen und dann den Datenrahmen erneut mit dem aktualisierten Schema zu laden.
Gibt es einen besseren und effizienteren Weg, dies zu tun, wie wir es bei Pandas tun?
Meine Funkenversion ist 1.5.0
for
Schleife + gemachtwithColumnRenamed
, aber Ihrereduce
Option ist sehr schön :)