我正在阅读Spark的最新代码,有评论:
backtrace:
#00 pc 00000408 /data/data/com.XXXX.YYY/files/libcrashreport.so (deleted) (offset 0x7000)
#01 pc 00091add /system/lib/libart.so (offset 0x1cf000)
我不明白(deleted)
,我会问火花如何自动找到这些隐式定义,并将隐式定义放入范围,因为用户只在其火花代码中创建了SparkContext实例
答案 0 :(得分:2)
我会问火花是如何自动找到这些隐含的 定义
它不是Spark,它是Scala编译器。在编译代码时,编译器有几个跟踪的位置以尝试查找含义。您可以在Where does Scala look for implicits?
中找到它们由于这些方法是在WritableConverter
上定义的,因此只要Scala查找implicits的某种方式属于范围,您就会自动在范围内进行这些转换并能够应用它们。