【发布时间】:2014-06-11 03:26:12
【问题描述】:
Spark 和 Scala 新手。 尝试对字数统计示例进行排序。 My code is based on this simple example。 我想按键按字母顺序对结果进行排序。如果我将键排序添加到 RDD:
val wordCounts = names.map((_, 1)).reduceByKey(_ + _).sortByKey()
然后我得到一个编译错误:
error: No implicit view available from java.io.Serializable => Ordered[java.io.Serializable].
[INFO] val wordCounts = names.map((_, 1)).reduceByKey(_ + _).sortByKey()
我不知道缺少隐含视图意味着什么。有人可以告诉我如何解决吗?我正在运行 Cloudera 5 Quickstart VM。我认为它捆绑了 Spark 0.9 版。
Scala 作业的来源
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SparkWordCount {
def main(args: Array[String]) {
val sc = new SparkContext(new SparkConf().setAppName("Spark Count"))
val files = sc.textFile(args(0)).map(_.split(","))
def f(x:Array[String]) = {
if (x.length > 3)
x(3)
else
Array("NO NAME")
}
val names = files.map(f)
val wordCounts = names.map((_, 1)).reduceByKey(_ + _).sortByKey()
System.out.println(wordCounts.collect().mkString("\n"))
}
}
一些(未排序的)输出
("INTERNATIONAL EYELETS INC",879)
("SHAQUITA SALLEY",865)
("PAZ DURIGA",791)
("TERESSA ALCARAZ",824)
("MING CHAIX",878)
("JACKSON SHIELDS YEISER",837)
("AUDRY HULLINGER",875)
("GABRIELLE MOLANDS",802)
("TAM TACKER",775)
("HYACINTH VITELA",837)
【问题讨论】:
-
没有隐式视图意味着你还没有定义这两种类型之间的隐式转换函数,至于为什么那些是它抱怨的类型不是 100% 确定的,
f打算的函数是什么做,看起来它正在映射出两种不同的类型
标签: scala apache-spark