Saya berasal dari latar belakang panda dan terbiasa membaca data dari file CSV ke dalam kerangka data dan kemudian hanya mengubah nama kolom menjadi sesuatu yang berguna menggunakan perintah sederhana:
df.columns = new_column_name_list
Namun, hal yang sama tidak berfungsi di pyspark dataframe yang dibuat menggunakan sqlContext. Satu-satunya solusi yang saya bisa lakukan dengan mudah adalah sebagai berikut:
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)
Ini pada dasarnya mendefinisikan variabel dua kali dan menyimpulkan skema pertama kemudian mengganti nama nama kolom dan kemudian memuat dataframe lagi dengan skema yang diperbarui.
Apakah ada cara yang lebih baik dan lebih efisien untuk melakukan ini seperti yang kita lakukan di panda?
Versi percikan saya adalah 1.5.0
for
loop +withColumnRenamed
, tetapireduce
pilihan Anda sangat bagus :)