ฉันมาจากพื้นหลังของ pandas และฉันคุ้นเคยกับการอ่านข้อมูลจากไฟล์ CSV เป็น dataframe แล้วก็เปลี่ยนชื่อคอลัมน์เป็นสิ่งที่มีประโยชน์โดยใช้คำสั่งง่าย ๆ :
df.columns = new_column_name_list
อย่างไรก็ตามเดียวกันไม่สามารถใช้งานได้ใน pyspark dataframes ที่สร้างขึ้นโดยใช้ sqlContext ทางออกเดียวที่ฉันสามารถคิดให้ทำได้ง่าย ๆ คือ:
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)
นี่คือการกำหนดตัวแปรโดยทั่วไปสองครั้งและอนุมานสคีมาก่อนจากนั้นเปลี่ยนชื่อชื่อคอลัมน์แล้วโหลดดาต้าเฟรมอีกครั้งด้วยสคีมาที่อัปเดต
มีวิธีที่ดีกว่าและมีประสิทธิภาพมากกว่าในการทำเช่นนี้ในแพนด้าหรือไม่?
เวอร์ชั่น Spark ของฉันคือ 1.5.0
for
ห่วง +withColumnRenamed
แต่ของคุณreduce
เป็นตัวเลือกที่ดีมาก :)