tôi có một dfLàm cách nào để cập nhật cột dựa trên điều kiện (giá trị trong một nhóm)?
+---+----+-----+
|sno|dept|color|
+---+----+-----+
| 1| fn| red|
| 2| fn| blue|
| 3| fn|green|
+---+----+-----+
Nếu bất kỳ giá trị cột màu đỏ sau đó tôi nên cập nhật tất cả các giá trị cột như đỏ
như dưới đây
+---+----+-----+
|sno|dept|color|
+---+----+-----+
| 1| fn| red|
| 2| fn| red|
| 3| fn| red|
+---+----+-----+
tôi không thể tìm nó ra . Bất kỳ sự giúp đỡ xin vui lòng tôi đã mệt mỏi sau đang
val gp=jdbcDF.filter($"dept".contains("fn"))
//.withColumn("newone",when($"dept"==="fn","RED").otherwise("NULL"))
gp.show()
gp.map(
row=>{
val row1=row.getAs[String](1)
var row2=row.getAs[String](2)
val make=if(row1 =="fn") row2="red"
Row(row(0),row(1),make)
}
).collect().foreach(println)
Tôi hy vọng tôi có thể thay thế khi với UDF, vì vậy tôi có thể trả lại bất kỳ màu sắc dựa trên một số logic. – Shankar
Xem cập nhật. Bạn nên cẩn thận với một UDF vì trình tối ưu hóa truy vấn của Spark SQL có thể làm tối ưu hóa (er) nghèo nàn. –
@Shankar: loại cú pháp này có thể là 'df.withColumn (" Green_Ind ", khi ($" color "===" Green ", 1) .when ($" color "===" Red ", 1) .otherwise (0)) ' –