繁体   English   中英

如何解决错误:value reduceByKey不是org.apache.spark.rdd.RDD [(Int,Int)]的成员吗?

[英]How to resolve error: value reduceByKey is not a member of org.apache.spark.rdd.RDD[(Int, Int)]?

我正在学习Apache Spark,并尝试在Scala终端上执行一个小程序。

我已经使用以下命令启动了dfs,yarn和history服务器:

start-dfs.sh
start-yarn.sh
mr-jobhistory-deamon.sh start historyserver

然后在scala终端中,我编写了以下命令:

 var file = sc.textFile("/Users/****/Documents/backups/h/*****/input/ncdc/micro-tab/sample.txt");
 val records = lines.map(_.split("\t"));
 val filters = records.filter(rec => (rec(1) != "9999" && rec(2).matches("[01459]")));
 val tuples = filters.map(rec => (rec(0).toInt, rec(1).toInt)); 
 val maxTemps = tuples.reduceByKey((a,b) => Math.max(a,b));

除最后一条命令外,所有命令均成功执行,并引发以下错误:

error: value reduceByKey is not a member of org.apache.spark.rdd.RDD[(Int, Int)]

我发现了一些解决方案,例如:

这来自一般使用对rdd函数。 reduceByKey方法实际上是PairRDDFunctions类的方法,该类具有RDD的隐式转换,因此它需要多个隐式类型类。 通常,当使用简单的具体类型时,这些已经在范围内。 但是您应该能够修改方法,使其也需要相同的隐式方法。

但是我不确定如何实现这一目标。

有什么帮助,如何解决这个问题?

看来您缺少进口商品。 尝试在控制台中编写以下代码:

import org.apache.spark.SparkContext._

然后运行上面的命令。 此导入带来了隐式转换,使您可以使用reduceByKey方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM