Pandalar arka plan geliyor ve CSV dosyalarından bir veri çerçevesine veri okuma ve daha sonra basit bir komut kullanarak yararlı bir şey sütun adlarını değiştirmeye alışkınım:
df.columns = new_column_name_list
Ancak, aynı sqlContext kullanılarak oluşturulan pyspark veri çerçevelerinde çalışmaz. Bunu kolayca yapmak için çözebileceğim tek çözüm şudur:
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)
Bu temelde değişkeni iki kez tanımlar ve önce şemayı çıkarır, ardından sütun adlarını yeniden adlandırır ve ardından veri şemasını güncellenmiş şema ile yeniden yükler.
Pandalarda yaptığımız gibi bunu yapmanın daha iyi ve daha etkili bir yolu var mı?
Kıvılcım versiyonum 1.5.0
for
döngü + ile yaptımwithColumnRenamed
, ancakreduce
seçeneğiniz çok güzel :)