Tôi đến từ nền gấu trúc và đang sử dụng để đọc dữ liệu từ các tập tin CSV vào một dataframe và sau đó chỉ cần thay đổi tên cột một cái gì đó hữu ích bằng cách sử dụng lệnh đơn giản:Làm thế nào để thay đổi tên cột dataframe trong pyspark?
df.columns = new_column_name_list
Tuy nhiên, tương tự không làm việc trong pyspark dataframes được tạo bằng sqlContext. Giải pháp duy nhất tôi có thể tìm ra để làm điều này một cách dễ dàng như sau:
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)
này về cơ bản là xác định các biến hai lần và suy luận giản đồ đầu tiên sau đó đổi tên các tên cột và sau đó tải dataframe lại với giản đồ được cập nhật .
Có cách nào tốt hơn và hiệu quả hơn để làm điều này giống như chúng tôi làm trong gấu trúc không?
phiên bản spark tôi là 1.5.0
tôi đã làm nó với một 'loop for' +' withColumnRenamed', nhưng tùy chọn 'reduce' của bạn là rất đẹp :) –
@FelipeGerard rằng là một ý tưởng rất xấu –
Cũng vì không có gì được thực hiện trong Spark cho đến khi một hành động được gọi là trên DF, nó chỉ là mã ít thanh lịch ... Cuối cùng kết quả DF là chính xác như nhau! –