1
Spark: UDF ดำเนินการหลายครั้ง
ฉันมีชื่อไฟล์พร้อมรหัสต่อไปนี้: def test(lat: Double, lon: Double) = { println(s"testing ${lat / lon}") Map("one" -> "one", "two" -> "two") } val testUDF = udf(test _) df.withColumn("test", testUDF(col("lat"), col("lon"))) .withColumn("test1", col("test.one")) .withColumn("test2", col("test.two")) ตอนนี้ตรวจสอบล็อกฉันพบว่าสำหรับแต่ละแถว UDF จะถูกดำเนินการ 3 ครั้ง ถ้าฉันเพิ่ม "test3" จากคอลัมน์ "test.three" ดังนั้น UDF จะถูกดำเนินการอีกครั้ง มีคนอธิบายได้ไหมทำไม สามารถหลีกเลี่ยงสิ่งนี้ได้อย่างถูกต้องหรือไม่ (โดยไม่ต้องแคชข้อมูลหลังจากที่เพิ่ม "test" แม้ว่าจะใช้งานได้)?