标签:
经常写代码的时候发现rdd没有reduceByKey的方法,这个发生在spark1.2及其以前对版本,因为rdd本身不存在reduceByKey的方法,需要隐式转换成
PairRDDFunctions才能访问,因此需要引入Import org.apache.spark.SparkContext._。不过到了spark1.3的版本后,隐式转换的放在rdd的object中,自动引入,不要引入其他的包。
定义了额外的rdd操作,比如哦说key-value-pair RDDs的 reduceByKey方法 需要用到的隐式转换.
object RDD {
//下面这个隐式转换在spark1.3之前原来是在SparkContext中,需要import SparkContext._ 之后才能使用。现在已经把他移到这,现在代码能够自动编译引入。但是原来的sparkContext中的继续保留。
implicit def rddToPairRDDFunctions[K, V](rdd: RDD[(K, V)])
(implicit kt: ClassTag[K], vt: ClassTag[V], ord: Ordering[K] = null): PairRDDFunctions[K, V] = {
new PairRDDFunctions(rdd)
}
至于什么是隐式转换,简单来讲就是scala偷梁换柱换柱,让隔壁老王来干你干不了的事情了。
标签:
原文地址:http://www.cnblogs.com/luckuan/p/4479551.html