- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Scala 和 Spark 的新手,所以我希望有人能解释为什么当它在抽象类中时,aggregateByKey 无法编译。这是我能想到的最简单的例子:
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
abstract class AbstractKeyCounter[K] {
def keyValPairs(): RDD[(K, String)]
def processData(): RDD[(K, Int)] = {
keyValPairs().aggregateByKey(0)(
(count, key) => count + 1,
(count1, count2) => count1 + count2
)
}
}
class StringKeyCounter extends AbstractKeyCounter[String] {
override def keyValPairs(): RDD[(String, String)] = {
val sc = new SparkContext(new SparkConf().setMaster("local").setAppName("counter"))
val data = sc.parallelize(Array("foo=A", "foo=A", "foo=A", "foo=B", "bar=C", "bar=D", "bar=D"))
data.map(_.split("=")).map(v => (v(0), v(1)))
}
}
Error:(11, 19) value aggregateByKey is not a member of org.apache.spark.rdd.RDD[(K, String)]
keyValPairs().aggregateByKey(0)(
^
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
class StringKeyCounter {
def processData(): RDD[(String, Int)] = {
val sc = new SparkContext(new SparkConf().setMaster("local").setAppName("counter"))
val data = sc.parallelize(Array("foo=A", "foo=A", "foo=A", "foo=B", "bar=C", "bar=D", "bar=D"))
val keyValPairs = data.map(_.split("=")).map(v => (v(0), v(1)))
keyValPairs.aggregateByKey(0)(
(count, key) => count + 1,
(count1, count2) => count1 + count2
)
}
}
最佳答案
如果你改变:
abstract class AbstractKeyCounter[K] {
abstract class AbstractKeyCounter[K : ClassTag] {
aggregateByKey
是
PairRDDFunctions
的方法(您的
RDD
被隐式转换为该类),其具有以下签名:
class PairRDDFunctions[K, V](self: RDD[(K, V)])
(implicit kt: ClassTag[K], vt: ClassTag[V], ord: Ordering[K] = null)
ClassTag[K]
的隐式值。和
vt: ClassTag[V]
.您的抽象类不知道 K 是什么,因此无法提供匹配的隐式值。这意味着隐式转换为
PairRDDFunctions
“失败”(编译器不执行转换),因此方法
aggregateByKey
找不到。
[K : ClassTag]
是添加隐式参数的简写
implicit kt: ClassTag[K]
到抽象类构造函数,然后由编译器使用并传递给
PairRDDFunctions
的构造函数.
关于scala - AggregateByKey 在抽象类中时无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39943600/
我是 Scala 和 Spark 的新手,所以我希望有人能解释为什么当它在抽象类中时,aggregateByKey 无法编译。这是我能想到的最简单的例子: import org.apache.spar
我遇到过以下 scala 示例,它解释了aggregateByKey。斯卡拉示例: val pairs=sc.parallelize(Array(("a",3),("a",1),("b",7),("a
我是 Apache spark 的新手,所以这个问题可能不好问,但我不知道 combinebykey 和 aggregatebykey 之间的区别以及何时使用哪个操作。 最佳答案 aggregateB
谁能解释一下reducebykey、groupbykey、aggregatebykey和combinebykey之间的区别吗?我已阅读有关此内容的文档,但无法理解确切的差异。 带有示例的解释会很棒。
这个问题在这里已经有了答案: How createCombiner,mergeValue, mergeCombiner works in CombineByKey in Spark ( Using
这三个 Apache Spark 转换有点令人困惑。有什么方法可以确定何时使用哪个以及何时避免使用哪个? 最佳答案 我认为official guide解释得很好。 我将突出显示差异(你有 (K, V)
Apache Spark pyspark.RDD API 文档提到 groupByKey()效率低下。相反,建议使用 reduceByKey() , aggregateByKey() , combin
我是一名优秀的程序员,十分优秀!