type 类型的 Spark reduceByKey(arguments) 不适用于参数 arguments

Posted

技术标签:

【中文标题】type 类型的 Spark reduceByKey(arguments) 不适用于参数 arguments【英文标题】:Spark reduceByKey(arguments) in the type type is not applicable for the arguments argumentstype 类型的 Spark reduceByKey(arguments) 不适用于参数 arguments 【发布时间】:2018-07-04 19:53:20 【问题描述】:

对于 reduce、fold 和 reduceByKey 函数,我收到以下错误。我搜索了整个论坛,但没有运气。

类型中的方法reduceByKey(Function2) JavaPairRDD 不适用于参数(新 函数2())

termsRDD 的类型为 JavaPairRDD<Integer, Integer>

    termsRDD.reduceByKey(new Function2<Integer,Integer,Integer>()

        private static final long serialVersionUID = -376611514417758310L;

        @Override
        public Integer apply(Integer arg0, Integer arg1) throws Exception 
            // TODO Auto-generated method stub
            return arg0+arg1;
        

    );

这是一个相当简单的代码,它分别对键值求和。

非常感谢任何帮助。 谢谢

【问题讨论】:

【参考方案1】:

你实现了错误的接口。

JavaPairRDD.reduceByKey 采用 org.apache.spark.api.java.function.Function2 需要 call 方法。 您似乎正在尝试实现scala.Function2

应该是

import org.apache.spark.api.java.function.Function2;

termsRDD.reduceByKey(new Function2<Integer,Integer,Integer>()
    @Override
    public Integer call(Integer arg0, Integer arg1) throws Exception 
        return arg0+arg1;
    
);

【讨论】:

以上是关于type 类型的 Spark reduceByKey(arguments) 不适用于参数 arguments的主要内容,如果未能解决你的问题,请参考以下文章

创建 Spark DataFrame。无法推断类型的架构:<type 'float'>

hello world

Spark TypeError:LongType 不能接受类型 <type 'unicode'> 中的对象 u'Value'

Spark Sql: TypeError("StructType 不能接受类型为 %s 的对象" % type(obj))

Spark:从异构数据中写入 Paquet

Spark 中 RDD 算子 ReduceByKey 和 GroupByKey 使用方法和区别