首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Hadoop中,我如何在运行时发现一个任务是一个缩减程序还是一个合并器?

在Hadoop中,我如何在运行时发现一个任务是一个缩减程序还是一个合并器?
EN

Stack Overflow用户
提问于 2012-08-13 04:47:14
回答 3查看 1.6K关注 0票数 4

如果使用MapReduce执行的操作不是交换式和结合式的,则合并器不能与减法器相同。

例如,在计算平均值时,组合器对键的值求和,减法器对其求和,然后将和除以该键的值的总数。合并器的代码只有很小的修改。如果您可以对组合器和reducer使用相同的类,并且可以轻松地确定当前任务是组合器还是reducer,会发生什么呢?如果它发现它是一个减法器,那么它就将和除以计数。

如下所示:

代码语言:javascript
运行
AI代码解释
复制
protected void reduce(Text keyIn, Iterable<PairWritable> valuesIn,
      Context context)
  throws IOException, InterruptedException {
    double sum = 0.0d;
    long count = 0l;

    for (PairWritable valueIn : valuesIn) {
      sum += valueIn.getSum();
      count += valueIn.getCount();
    }

    if (THIS_IS_A_REDUCER) {
      sum /= count;
    }

    context.write(keyIn, new PairWritable(sum, count));
  }

有可能做到这一点吗?上面的代码THIS_IS_A_REDUCER可以被替换成其他东西吗?

我可以根据任务尝试ID字符串确定任务是映射器还是减法器,但组合器和减法器似乎都有类似的字符串模式。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-13 13:25:38

我想您可以询问Context对象并获得任务ID,然后,一旦您有了ID,映射器(包括组合器)的名称中将有一个"m“,而reducer的名称中将有一个"r”。

要获取任务尝试ID,请使用.getTaskAttemptID()。我认为你应该能够使用context.getTaskAttemptID()来使用它,但是我不能测试它来确定。

票数 2
EN

Stack Overflow用户

发布于 2012-10-23 23:21:32

这是一个有缺陷的问题。无论何时您发现需要区分任务调用了哪个reduce()。添加一个组合器。例如,您可以这样写

代码语言:javascript
运行
AI代码解释
复制
public static class Combine extends MapReduceBase implements Reducer<Text, Text, Text, Text> {
public void reduce(Text key, Iterator<Text> message, OutputCollector<Text, Text> output, Reporter reporter) throws IOException {}

public static class Reduce extends MapReduceBase implements Reducer<Text, Text, Text, Text> {
public void reduce(Text key, Iterator<Text> message, OutputCollector<Text, Text> output, Reporter reporter) throws IOException {}

在main()中,您可以这样写

代码语言:javascript
运行
AI代码解释
复制
conf.setReducerClass(Reduce.class);
conf.setCombinerClass(Combine.class);
票数 3
EN

Stack Overflow用户

发布于 2013-04-10 21:03:53

虽然我知道这个问题已经解决了,但我有另一个解决方案。我所做的就是让我的Combiner成为Reducer的子类。然后,在Reducer代码中,我可以测试我是否是Combiner子类。

这样做的主要好处是我需要在Reducer步骤中修改我的键,但不想在合并步骤中更改它(否则我会应用相同的转换两次)。除此之外,95%的代码是相同的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11928316

复制
相关文章
Android中Java和JavaScript交互
Android中Java和JavaScript交互 Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。 如何实现 实现Java和js交互十分便捷。通常只需要以下几步。 WebView开启JavaScript脚本执行 WebView设置供JavaScript调用的交互接口。 客户端和网页端编写调用对方的代码。 本例代码 为了便于讲解,先贴出全部代码 Java代码
用户1289394
2018/02/26
1.6K0
Android中Java和JavaScript交互
Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。
技术小黑屋
2018/09/04
9610
Android开发笔记(一百五十一)WebView与JavaScript交互的四种形式
WebView如果作为简单的网页浏览器,对于一般的浏览行为来说,已经足够了。可做为企业开发者,你的App通常要嵌入自家公司的网页,如此一来,还得考虑App与Web之间的消息传递,这就涉及到App的原生代码与Web的JS代码之间的通信了。 App与Web做为消息通信的双方,具体的交互行为分为四类,包括:App通知Web执行某项动作、App主动从Web获取信息、Web通知App执行某项动作,Web主动从App获取信息,这四种行为详细说明如下:
aqi00
2019/01/18
1.4K0
Android WebView
src=>main=>assets目录下创建news_top.html和news_bottom.html
码客说
2020/05/09
8170
Android webview 与 js(Vue) 交互
项目写好后,执行 npm run serve 命令启动项目,启动成功后会在命令行看到两个地址:
solocoder
2022/04/06
10.5K0
Android webview 与 js(Vue) 交互
JSBridge 原理
近些年,移动端普及化越来越高,开发过程中选用 Native 还是 H5 一直是热门话题。Native 和 H5 都有着各自的优缺点,为了满足业务的需要,公司实际项目的开发过程中往往会融合两者进行 Hybrid 开发。Native 和 H5 分处两地,看起来无法联系,那么如何才能让双方协同实现功能呢?
全栈程序员站长
2022/11/15
2.3K0
Android开发笔记(六十四)网页加载与JS调用
如果一个网站已经有现成的网页及业务逻辑,那么使用WebView将其内嵌到app中,省去了app重画页面与http通信的事情,无疑是更经济的做法。WebView就是Android上的一个浏览器内核,可自动展示web页面,并且实现js代码的相互调用。 下面是WebView的常用方法: getSettings : 获取浏览器的web设置信息。 addJavascriptInterface : 添加本地的js代码接口。 removeJavascriptInterface : 移除本地的js代码接口。在4.0至4.2的Android系统上,Webview自己增加了searchBoxJavaBredge_,可能被黑客利用导致远程代码执行。为阻止该漏洞,需要手工移除接口searchBoxJavaBredge_。代码如下所示:
aqi00
2019/01/18
6.5K0
android webview 漏洞
webview.getSettings().setJavaScriptEnabled(true) 设置WebView是否允许执行JavaScript脚本,默认false,不允许 API <= 17 需要注意的是在 API17 版本之后,需要在被调用的地方加上 @addJavascriptInterface 约束注解,因为不加上注解的方法是没有办法被调用的
tea9
2022/07/16
1.4K0
android WebView总结
浏览器控件是每一个开发环境都具备的,这为马甲神功提供了用武之地。windows的有webbrowser,android和ios都有webview。仅仅是其引擎不同,相对于微软的webbrowser。android及ios的webview的引擎都是webkit,对Html5提供支持。本篇主要介绍android的webview之强大。
全栈程序员站长
2022/07/14
9030
android WebView总结
Carson带你学Android:你要的WebView与 JS 交互方式都在这里了
步骤1:将需要调用的JS代码以.html格式放到src/main/assets文件夹里
Carson.Ho
2022/01/21
9290
Carson带你学Android:你要的WebView与 JS 交互方式都在这里了
Android:你要的WebView与 JS 交互方式 都在这里了
对于Android调用JS代码的方法有2种: 1. 通过WebView的loadUrl() 2. 通过WebView的evaluateJavascript()
Carson.Ho
2019/02/22
7.2K0
小白必看,JSBridge 初探
近些年,移动端普及化越来越高,开发过程中选用 Native 还是 H5 一直是热门话题。Native 和 H5 都有着各自的优缺点,为了满足业务的需要,公司实际项目的开发过程中往往会融合两者进行 Hybrid 开发。Native 和 H5 分处两地,看起来无法联系,那么如何才能让双方协同实现功能呢?
政采云前端团队
2020/02/25
2.6K0
小白必看,JSBridge 初探
小白必看,JSBridge 初探
近些年,移动端普及化越来越高,开发过程中选用 Native 还是 H5 一直是热门话题。Native 和 H5 都有着各自的优缺点,为了满足业务的需要,公司实际项目的开发过程中往往会融合两者进行 Hybrid 开发。Native 和 H5 分处两地,看起来无法联系,那么如何才能让双方协同实现功能呢?
前端劝退师
2020/02/26
1.5K0
小白必看,JSBridge 初探
关于原生+WebView js交互、数据传输问题
原生能接收到webView内控件点击事件,以至拿到点击事件传过来数据 1、定义一个接口 public interface WebHomeOnClickInterface { void showStorePicker(); //显示选择框的事件 void cancelStorePicker(); //选择框消失的事件 } 2、定义一个类使用该接口 public class JsInterationHome { WebHomeOnClickInterface
听着music睡
2021/10/25
9790
H5和移动端通信
弹窗包括:alert、confirm、prompt, 和url拦截类似都在回调方法中处理
无忧366
2022/10/21
1.4K0
Android WebView获取cookie
重写WebViewClient方法 public class MyWebViewClient extends WebViewClient { public boolean shouldOverrideUrlLoading(WebView webview, String url) { webview.loadUrl(url); return true; } public void onPageFinished(WebView view, String
yechaoa
2022/06/10
5.2K1
【Android笔记】浅谈WebView
WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:
易寒
2021/12/27
1K0
利用Android Webview漏洞
https://github.com/t4kemyh4nd/vulnwebview
tea9
2023/08/24
6910
利用Android Webview漏洞
JSBridge小科普
做Hybird APP开发的同学,应该对JSBridge不陌生,它用于H5页面和Native(Android或者iOS)通信。常用的三方库如Dsbridge系列(https://github.com/wendux/DSBridge-Android)。那么,你知道JSBridge到底是如何在两端进行通信的吗?
娜姐
2020/09/22
2.9K0
JSBridge小科普
点击加载更多

相似问题

使用Android WebView EvaluateJavascript

17

OpenLayers Android WebView Uncaught

13

没有调用Android WebView evaluateJavaScript回调。

15

Android WebView.evaluateJavascript()与不明参考误差

12

EvaluateJavascript使用API级别18的Android WebView

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档