implicit paramter
object ops extends App {
def add(implicit v: Int) = 1 + v
implicit val value = 2
println(add)
}
implicit function
扩展DataFrame方法,新增aMethod,bMethod两个方法
class SqlJson(dataFrame: DataFrame) {
def aMethod: String = dataFrame.head().getAs[String]("name")
def bMethod: String = dataFrame.head().getAs[String]("age")
}
object sqlJsonParsing {
implicit def aMethod(dataFrame: DataFrame) = new SqlJson(dataFrame)
}
object ops extends App {
val spark = SparkSession
.builder
.appName(Test.getClass.getSimpleName)
.master("local[*]")
.getOrCreate()
import sqlJsonParsing._
val df = spark.createDataFrame(Seq(("a", 11), ("b", 12), ("c", 13))).toDF("name", "age")
println(df.aMethod)
}
implicit玩法很多,如果开发过程估计团队会做好规范吧,不然真的很麻烦