Apache Spark:Hashmap累加器给出类型不匹配错误

 LDP-liu 发布于 2023-01-18 03:40

我试图将hashmap声明为Spark(v0.9.1)累加器.文档声明"Spark本身支持数值类型和标准可变集合的累加器......"(链接).

但是,当我尝试创建HashMap [String,Boolean]时,这对我来说似乎不起作用:

scala> import collection.mutable.HashMap
import collection.mutable.HashMap

scala> val accum = sc.accumulator("test" -> true)(HashMap)
:13: error: type mismatch;
 found   : scala.collection.mutable.HashMap.type
 required: org.apache.spark.AccumulatorParam[(String, Boolean)]
           val accum = sc.accumulator("test" -> true)(HashMap)

tkroman.. 7

首先,你应该通过一个实际HashMap[String, String]而不是(String, String):

sc.accumulator(HashMap("t" -> true))

你可能需要编写自己的累加器,因为我没有找到一个隐含的开箱即用的HashMap:

implicit object iHashMap extends AccumulatorParam[HashMap[String, Boolean]] {
  def zero(m: HashMap[String, String]) = HashMap()
  def addInPlace(m1: HashMap[String, Boolean], m2: HashMap[String, Boolean]) = m1 ++ m2 
}

这种行为可能不是你个人所期望的,但我希望你能抓住这个主旨.

您可能还会在这里找到一些非常有用的示例:https://github.com/apache/spark/blob/60abc252545ec7a5d59957a32e764cd18f6c16b4/core/src/test/scala/org/apache/spark/AccumulatorSuite.scala

2 个回答
  • 首先,你应该通过一个实际HashMap[String, String]而不是(String, String):

    sc.accumulator(HashMap("t" -> true))

    你可能需要编写自己的累加器,因为我没有找到一个隐含的开箱即用的HashMap:

    implicit object iHashMap extends AccumulatorParam[HashMap[String, Boolean]] {
      def zero(m: HashMap[String, String]) = HashMap()
      def addInPlace(m1: HashMap[String, Boolean], m2: HashMap[String, Boolean]) = m1 ++ m2 
    }
    

    这种行为可能不是你个人所期望的,但我希望你能抓住这个主旨.

    您可能还会在这里找到一些非常有用的示例:https://github.com/apache/spark/blob/60abc252545ec7a5d59957a32e764cd18f6c16b4/core/src/test/scala/org/apache/spark/AccumulatorSuite.scala

    2023-01-18 04:02 回答
  • 我记得有同样的问题,这里有一个小小的要点,HashMap[String, Int]在Spark中使用as累加器:HashMapParam.scala

    如果k累加器中已存在一个带有值的键,v1并且我们尝试k -> v2输入它,则生成的累加器将包含k -> v1 + v2.

    这并不能完全回答您的问题,但可能有助于构建您自己的实现.

    2023-01-18 04:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有