Scala Spark:javapairdd的自定义运算符

Scala Spark:javapairdd的自定义运算符,scala,apache-spark,Scala,Apache Spark,我试图为JavaPairdd声明一个自定义运算符,下面是代码: object CustomOperators { implicit class CustomRDDOperator[K: ClassTag, V: ClassTag](rdd: JavaPairRDD[K, V]) { def customOp = { // logic } } } 但是我不能从JavaPairDD调用这个函数 我是Scala的新手,所以很有可能我做了一些根本错误的事情。需要一

我试图为JavaPairdd声明一个自定义运算符,下面是代码:

object CustomOperators {

  implicit class CustomRDDOperator[K: ClassTag, V: ClassTag](rdd: JavaPairRDD[K, V]) {
    def customOp = {
      // logic
    }
  }
}
但是我不能从JavaPairDD调用这个函数

我是Scala的新手,所以很有可能我做了一些根本错误的事情。需要一些指导


向JavaPairdd添加自定义函数的最佳方法是什么?

您只需在使用它的文件中添加
导入自定义运算符即可。但是,如果您使用的是Scala,那么首先不应该使用
JavaPairRDD
(除非您使用的是主要从Java使用的第三方库)。

您只需要在使用它的文件中添加
import CustomOperators.
。但是,如果您使用的是Scala,那么首先不应该使用
JavaPairRDD
(除非您使用的是主要从Java使用的第三方库)。

我使用的是Spark的Java api。我也可以将项目更改为使用scala,但是将完整的Spark作业更改为使用scala是不可能的,您不能从Java使用这样的“扩展方法”。当然可以,但它看起来像
CustomOperators.CustomRDDOperator(rdd,ClassTag.apply(K.class),…).customOp
,如果不是更糟的话。要从Java中使用,只需编写一个普通的静态方法(如果您无法避免
ClassTag
,请传递一个
Class
),您的意思是扩展JavaPairdd,然后添加自定义操作符吗?我使用的是Spark的Java api。我也可以将项目更改为使用scala,但是将完整的Spark作业更改为使用scala是不可能的,您不能从Java使用这样的“扩展方法”。当然可以,但它看起来像
CustomOperators.CustomRDDOperator(rdd,ClassTag.apply(K.class),…).customOp
,如果不是更糟的话。要从Java中使用,只需编写一个普通的静态方法(如果无法避免
ClassTag
,请传递一个
Class
),您的意思是扩展JavaPairdd,然后添加自定义操作符吗?