spark scala dataframe을 withColumn을 통해 한줄한줄 iteration을 돌려 처리가 가능하다.
내가 원하는 함수에 한개의 row를 넘기고, 그 처리된 결과를 새로운 column으로 생성한다.

예제코드

import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.UserDefinedFunction
val sampleFunc: (Double, Double, Int) => Double = {
(value1: Double, value2: Double, cnt: Int) =>
value1 + value2 + cnt
}
val sampleUdf: UserDefinedFunction = udf(sampleFunc)
val df2 = df.withColumn("newColumn", sampleUdf($"col1", $"col2", lit(1)))
df2.show()
view raw spark_udf.scala hosted with ❤ by GitHub
  • sampleFunc을 생성하고 UserDefinedFunction, udf를 통해 sampleUdf를 생성
  • 생성된 sampleUdfDataFramewithColumn을 이용
    • 첫번째 파라미터는 withColumn을 통해 생성될 신규 컬럼명
    • 두번째 파라미터는 udfFunction + parameters
    • 여기서 lit은 constant 값을 넘길때 사용한다.

+ Recent posts