Apache Spark-reducebyKey-Java-

2023-12-06

我正在尝试了解reduceByKeySpark中使用java作为编程语言。

假设我有一句话“我就是我”。 我将句子分解成单词并将其存储为列表[I, am, who, I, am].

现在这个函数分配1对每个单词:

JavaPairRDD<String, Integer> ones = words.mapToPair(new PairFunction<String, String, Integer>() {
    @Override
    public Tuple2<String, Integer> call(String s) {
        return new Tuple2<String, Integer>(s, 1);
    }
});

所以输出是这样的:

(I,1) 
(am,1)
(who,1)
(I,1)
(am,1)

现在,如果我有 3 个减速器正在运行,每个减速器都会获得一个键以及与该键关联的值:

reducer 1:
    (I,1)
    (I,1)

reducer 2:
    (am,1)
    (am,1)

reducer 3:
    (who,1)

我想知道

A。下面的函数到底发生了什么。
b.参数是什么new Function2<Integer, Integer, Integer>
C。 JavaPairRDD 基本上是如何形成的。

JavaPairRDD<String, Integer> counts = ones.reduceByKey(new Function2<Integer, Integer, Integer>() {
    @Override
    public Integer call(Integer i1, Integer i2) {
        return i1 + i2;
    }
});

我认为你的问题围绕着这里的reduce函数,它是一个有2个参数返回1的函数,而在Reducer中,你实现了一个多对多的函数。

这个 API 虽然不太通用,但也更简单。在这里,您提供了一个关联运算,可以将任意 2 个值减少到 1(例如,两个整数之和为 1)。这用于将每个键的所有值减少到 1。没有必要提供 N 到 1 函数,因为它可以通过 2 到 1 函数来完成。在这里,您不能为一个键发出多个值。

结果是每个(键,值串)的(键,减少的值)。

经典 Hadoop MapReduce 中的 Mapper 和Reducer 实际上都非常相似(只是它们采用一组值而不是每个键单个值)并且允许您实现许多模式。从某种程度上来说这是好的,但从某种程度上来说却是浪费和复杂的。

您仍然可以重现Mappers和Reducers所做的事情,但是Spark中的方法是mapPartitions,可能与groupByKey配对。这些是您可能会考虑的最通用的操作,我并不是说您should在 Spark 中以这种方式模拟 MapReduce。事实上,它不太可能有效。但这是可能的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Spark-reducebyKey-Java- 的相关文章

随机推荐

  • 在 Windows 上编译错误 C2131 和 C3863,但在 Linux 上则不然 [重复]

    这个问题在这里已经有答案了 我有一段代码可以在 Linux Raspbian 上编译并正常工作 但不能在 Windows VS 17 上编译 我使用 CMAKE 3 进行跨平台编译 就像我说的 我在 Linux 上构建它没有问题 以下是我使
  • 通过 WebRTC 流对实时 PCM 音频数据进行未压缩、未加密、未更改、原始传输

    我正在转移一个live使用 WebRTC 的 2 个 Electron 窗口进程之间的音频流 没有 ICE 或 STUN 服务器 或类似的东西 连接是通过 Electron IPC 通信手动建立的 基于这段代码 注意 从有关音频流本身的技术
  • 是否能保证线程在 aspnet 中完成?

    我在 aspnet 中有这个简单的代码 假设没有异常 文件锁定或进程终止 new Thread gt Thread sleep 15000 GC Collect File Write dummy file Start GC Collect
  • 想要检测浏览器关闭事件?

    我正在开发任何需要检测用户是否关闭选项卡或浏览器的应用程序 以便我可以将用户与其他用户断开连接 基本上它是一个聊天应用程序 我用过 window onbeforeunload confirmExit function confirmExit
  • 自定义分类 - 根据角色或能力设置访问权限

    我刚刚学习 WordPress 的自定义分类法 如何限制我的用户使用分类法的访问权限 例如 我创建了一个名为featured我只希望编辑及以上角色能够向此分类添加帖子 如何设置访问级别 无论是基于用户角色还是能力 两者都适合我 这是我用于分
  • URL 中的日期 dd/mm/yyyy

    我在 URL 中传递一个日期 dd mm yyyy 格式如下 http www website com parameter 20 02 2000 我正在使用以下 PHP 将其转换为 YYYY MM DD 格式 我的数据库如下 SELECT
  • Python Curses - 打印 Ascii 艺术

    我有一个很长的多行 ascii art 字符串 我想使用 Pythoncurses 模块将其呈现给用户 我对此有点困惑 因为在curses中打印字符串的唯一方法是addstr y x string 它只打印到一行 关于如何实现这一点有什么想
  • 如何在JPA中实现复杂的多对多关系?

    这里是数据库架构 CREATE TABLE Products id INT NOT NULL AUTO INCREMENT category id INT NOT NULL description VARCHAR 100 price DEC
  • 如何从多个匹配对象中删除数组中的单个对象

    var testarray NSArray testarray 1 2 2 3 4 5 3 print testarray testarray removeObject 2 我想从多个匹配对象中删除单个对象 例如 myArray 1 2 2
  • 实时编辑用户输入

    是否可以自动插入字符EditText 当用户输入数据时 IE 如果用户输入一个长数字 例如123456789012 这个数字是否有可能在他在编辑文本框中键入时出现 但每 4 个字符有一个破折号 因此 当您输入上面的数字时 您会看到它被输入到
  • 圆形图像按钮android

    我有一个如图所示的图像按钮 我想要它周围的红色空间 它将是透明的 只是用红色来标识空间 将不可点击 是否可以 我尝试了不同的代码 例如通过 xml 或一些圆形图像视图代码 但没有任何帮助 无需计算任何内容 您唯一需要做的就是在按钮模板 xm
  • 在浏览器中强制使用 Mime 类型(使用 Javascript)

    我认为出于安全考虑这是不可能的 但是 是否可以强制浏览器处理具有某种 mime 类型的文件不控制服务器 我正在从 file 在客户端的机器本身上 提供文件 并且我希望文本文件可以在其关联的文本编辑器中打开 注意 Firefox 只是打开文件
  • 在递归函数调用之前使用 return 子句与不使用 return 子句有何不同?

    我只是在尝试一些递归 并注意到一些让我困惑的事情 让我用一些代码示例来说明 function loop x if x gt 10 return x loop x 1 the recursive call loop 0 上面的调用返回unde
  • 设计内存有限的记忆系统的简单方法是什么?

    我正在编写一个手动计算记忆系统 呃 在 Matlab 中 简单的部分很简单 执行计算后将数据放入记忆系统的一种方法 一种从记忆中查询和获取数据的方法 一种查询系统所有 密钥 的方法 这些部分没有太多疑问 问题是我的计算机的内存量有限 因此有
  • Firebase UI 回收器适配器中的不同子集合

    我正在尝试获取不同的子集合并使它们适应我的RecyclerAdapter与 Firebase UI 我的Cloud Firestore设置如下 user Collection uid1 Document name email fields
  • 将 XML 文档导入 Rails 数据库?

    我一直在阅读一个又一个的教程 但似乎没有什么对我有用 目标是获取包含元素和属性的 XML 文档并将数据插入数据库中 每个元素 属性将是数据库中的一列 每个条目是一行 这是我一直在使用的虚构 XML 文档
  • 使用 html 链接打开 Android 日历

    我需要在 Android 设备上打开日历应用程序 使用简单的 html 链接 我可以在 iOS 中使用 href CALSHOW 执行此操作 安卓有类似的东西吗 或者有什么解决方法吗 提前致谢 在 Android 上 有一种比 ios ur
  • numpy.random.shuffle 返回 None

    我安装了numpy1 8 2然后我尝试了以下代码 import numpy as np a np arange 10 print a np random shuffle a 但它的输出是 0 1 2 3 4 5 6 7 8 9 None 我
  • heroku:Spring Boot 仅使用 https 访问端点

    我在heroku 上部署了一个Spring Boot java 应用程序 我想确保我的注册端点只能通过 https 访问 到目前为止我知道 heroku 使用负载均衡器 它将每个 https 连接重定向到带有特殊标头 X forwarded
  • Apache Spark-reducebyKey-Java-

    我正在尝试了解reduceByKeySpark中使用java作为编程语言 假设我有一句话 我就是我 我将句子分解成单词并将其存储为列表 I am who I am 现在这个函数分配1对每个单词 JavaPairRDD