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

mmvthczy  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(866)

我正在学习apachespark并尝试在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的隐式转换,因此它需要几个隐式类型类。通常在处理简单的具体类型时,这些类型已经在范围内了。但是您应该能够修改您的方法,使其也需要相同的隐式方法。
但我不知道如何做到这一点。
有什么帮助,如何解决这个问题?

7kjnsjlb

7kjnsjlb1#

你好像少了一个进口货。尝试在控制台中写入以下内容:

import org.apache.spark.SparkContext._

然后运行上述命令。这个导入带来了一个隐式转换,它允许您使用reducebykey方法。

相关问题