我正在尝试针对特定问题实现 MapReduce 算法。假设在我的 Mapper 中我需要处理一个大型文本对象。以下示例总结了我的问题。我有文本对象:Today is a lovely day我需要对这些词做一些处理。所以我有两个选择:
我可以将以下形式的键值对发送到 Reducer:
<1,Today>
<1,is>
<1,a>
<1,lovely>
<1,day>
我可以发送键值对 <1,Today is a lovely day>到 reducer 然后处理它,例如标记化字符串对象。
这种情况的最佳方法是什么?在第一种情况下,我必须向 reducer 发送更多数据,但我没有像第二种情况那样要标记化的字符串对象。但是在第二种情况下,Mapper 发送的数据量较小。
最佳答案
我认为您不会通过这种方式减少流量来显着提高性能。这里真正重要的是,在第一种情况下,您的所有数据都将在按单词进入 reducer 之前进行分组,从而导致与第二个选项相比,一组完全不同的键值对。我不确定您能否对它们执行相同的操作。假设您将拥有:
<Today is a lovely day>
<Today is another lovely day>
在第一种情况下,你的 reducer 将使用分组的词对进行操作(假设键是词而不是数字):
<a, 1>
<another, 1>
<day, 2>
<is, 2>
<lovely,2>
<Today, 2>
如您所见,reducer 输入是分组和排序的,在更高级的场景中,您可以根据此类输入的值执行逻辑,例如查找最大值或搜索平均值。
在第二种情况下,您的键是句子:
<Today is a lovely day, 1>
<Today is another lovely day, 1>
所以有可能两个不同的 reducer 会处理这两对。您可以对其执行的操作与第一个操作略有不同,因为它是一组不同的数据。您无法像第一种情况那样执行基于键的最大值或平均值
关于java - Hadoop 上的 MapReduce - 将数据从 Mapper 发送到 Reducer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43054835/
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht