当前位置: 首页 > 知识库问答 >
问题:

groupByKey在spark中工作不正常

施令雪
2023-03-14

所以,我有一个RDD,它有如下键值对。

(Key1, Val1)
(Key1, Val2)
(Key1, Val3)
(Key2, Val4)
(Key2, Val5)

在groupByKey之后,我希望得到这样的东西

Key1, (Val1, Val2, Val3)
Key2, (Val4, Val5)

然而,我发现即使在执行groupByKey()之后,也会重复相同的键。键值对的总数肯定会减少,但仍然有许多重复的键。有什么问题吗?

键的类型基本上是一个Java类,其中包含整数类型的字段。火花是否也在考虑对象字段以外的东西来识别这些对象?

共有1个答案

弓俊晖
2023-03-14

Spark中的groupByKey和许多其他方法都依赖于对象哈希。如果类的两个实例没有返回相同的hashCode,那么Spark将不会认为它们相等,即使它们的所有字段都相等。

确保覆盖等于和哈希代码!

 类似资料:
  • 主要内容:groupByKey函数的示例在Spark中,函数是一种经常使用的转换操作,它执行数据的混乱。它接收键值对(K,V)作为输入,基于键对值进行分组,并生成(K,Iterable)对的数据集作为输出。 groupByKey函数的示例 在此示例中,根据键对值进行分组。要在Scala模式下打开Spark,请按照以下命令操作。 使用并行化集合创建RDD。 现在,可以使用以下命令读取生成的结果。 应用函数对值进行分组。 现在,可以使用以下

  • 你好,我经常需要在代码中使用,但我知道这是一个非常繁重的操作。由于我正在努力提高性能,我想知道删除所有调用的方法是否有效。 我使用的是,但是由于这种方法对于大型数据集可能会有很大的问题,所以我想使用这个解决方案: 我所做的不是创建类型对(Int,Int)的RDD,而是创建类型对(Int,list[Int]),所以我的如下所示 你认为有没有更快的方法来达到同样的结果,使用一些其他的方法?谢谢你。

  • 我正在使用CodeIgniter3.0。6.目前正在一页网站上工作,该网站具有搜索功能。我在codeigniter的配置文件中启用了csrf_保护选项,并使用form_open()函数创建表单。 当我按下submit按钮时,搜索功能运行良好,但在提交表单后,当我刷新页面时(使用任何刷新页面的功能,如从keybord或浏览器刷新),CSRF不工作,并显示错误“您请求的操作不允许”。 注意:我使用po

  • 我正在为Spark Streaming作业构建指标系统,在系统中,指标收集在每个执行程序中,因此需要在每个执行程序中初始化指标源(用于收集指标的类)。 度量源被打包在一个jar中,当提交作业时,jar使用参数'--jars'从本地发送到每个执行器,但是,执行器在jar到达之前开始初始化度量源类,因此,它会抛出类未找到异常。 似乎如果执行者可以等到所有资源都准备好,问题就会得到解决,但我真的不知道该

  • 我正在处理碎片,所以在我的视图寻呼机中有三个碎片 因此,我在第一个片段中使用了方法,所以当我从一个片段切换到另一个片段并返回到第一个片段时,我的方法不起作用 所以有人给出解决方案吗

  • 如何在Windows7上运行Apache Spark 在Windows 7环境中安装Apache Spark 我就是这么做的- 是个错误吗?我做错什么了吗? 谢了!