gpt4 book ai didi

scala - 值 reduceByKey 不是 org.apache.spark.rdd.RDD 的成员

转载 作者:行者123 更新时间:2023-12-04 06:36:16 24 4
gpt4 key购买 nike

很伤心。我的spark版本是2.1.1,Scala版本是2.11

import org.apache.spark.SparkContext._
import com.mufu.wcsa.component.dimension.{DimensionKey, KeyTrait}
import com.mufu.wcsa.log.LogRecord
import org.apache.spark.rdd.RDD

object PV {

//
def stat[C <: LogRecord,K <:DimensionKey](statTrait: KeyTrait[C ,K],logRecords: RDD[C]): RDD[(K,Int)] = {
val t = logRecords.map(record =>(statTrait.getKey(record),1)).reduceByKey((x,y) => x + y)

我收到这个错误
at 1502387780429
[ERROR] /Users/lemanli/work/project/newcma/wcsa/wcsa_my/wcsavistor/src/main/scala/com/mufu/wcsa/component/stat/PV.scala:25: error: value reduceByKey is not a member of org.apache.spark.rdd.RDD[(K, Int)]
[ERROR] val t = logRecords.map(record =>(statTrait.getKey(record),1)).reduceByKey((x,y) => x + y)

定义了一个特征
trait KeyTrait[C <: LogRecord,K <: DimensionKey]{
def getKey(c:C):K
}

It is compiled,Thanks.


 def stat[C <: LogRecord,K <:DimensionKey : ClassTag : Ordering](statTrait: KeyTrait[C ,K],logRecords: RDD[C]): RDD[(K,Int)] = {
val t = logRecords.map(record =>(statTrait.getKey(record),1)).reduceByKey((x,y) => x + y)

关键需要覆盖 Ordering[T]。
  object ClientStat extends KeyTrait[DetailLogRecord, ClientStat] {
implicit val c

lientStatSorting = new Ordering[ClientStat] {
override def compare(x: ClientStat, y: ClientStat): Int = x.key.compare(y.key)
}

def getKey(detailLogRecord: DetailLogRecord): ClientStat = new ClientStat(detailLogRecord)
}

最佳答案

这来自于一般使用 pair rdd 函数。 reduceByKey方法实际上是PairRDDFunctions的一个方法类,它具有来自 RDD 的隐式转换:

implicit def rddToPairRDDFunctions[K, V](rdd: RDD[(K, V)])
(implicit kt: ClassTag[K], vt: ClassTag[V], ord: Ordering[K] = null): PairRDDFunctions[K, V]

所以它需要几个隐式类型类。通常在使用简单的具体类型时,那些已经在范围内。但是您应该能够修改您的方法以还需要那些相同的隐式:
def stat[C <: LogRecord,K <:DimensionKey](statTrait: KeyTrait[C ,K],logRecords: RDD[C])(implicit kt: ClassTag[K], ord: Ordering[K])

或者使用较新的语法:
def stat[C <: LogRecord,K <:DimensionKey : ClassTag : Ordering](statTrait: KeyTrait[C ,K],logRecords: RDD[C])

关于scala - 值 reduceByKey 不是 org.apache.spark.rdd.RDD 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com