- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大数据核心技术 之高级MR编程技术 知识点 2 MapReduce高级编程技术 1.复合键值对的使用 2.用户自定义数据类型 3.用户自定义输入输出格式 4.用户自定义Partitioner和Combiner 5.组合/迭代式MapReduce计算任务处理 6.全局参数/数据文件的传递 7.性能调优 MR流水线回顾 3 一、复合键值对的使用 4 1、用复合键让系统完成排序 单词map计算过程结束后进行Partitioning处理时,系统自动按照map的输出键进行排序,因此,进入Reduce节点的(key, {value})对将保证是按照key进行排序的,而{value}则不保证是排好序的。 为了解决这个问题,可以在Reduce过程中对{value}列表中的各个value进行本地排序。但当{value}列表数据量巨大、无法在本地内存中进行排序时,将出现问题。 一个更好的办法是,将value中需要排序的部分加入到key中形成复合键,这样将能利用MapRecue系统的排序功能完成排序。 但需要实现一个新的Partitioner,保证原来同一key值的键值对最后分区到同一个Reduce节点上。 一、复合键值对的使用--用复合键让系统完成排序 5 带频率的倒排索引示例 1: class Mapper 2: procedure Map(docid n, doc d) 3: H ← new AssociativeArray 4: for all term t ∈ doc d do 5: H{t} ← H{t} + 1 6: for all term t ∈ H do 7: Emit(term t, posting n, H{t}) 1: class Reducer 2: procedure Reduce(term t, postings [n1, f1, n2, f2…]) 3: P ← new List 4: for all posting a, f ∈ postings [n1, f1, n2, f2…] do 5: Append(P, a, f) 6: Sort(P); // 进入Reduce节点的postings不保证按照文档序 //号排序,因而需要对postings进行一个本地排序 7: Emit(term t; postings P) 一、复合键值对的使用--用复合键让系统完成排序 6 带频率的倒排索引示例 进入Reduce节点的postings不保证按照文档序号排序,因而需要对postings进行一个本地排序 一、复合键值对的使用--用复合键让系统完成排序 7 带频率的倒排索引示例 为了能利用系统自动对docid进行排序, 解决方法是:代之以生成(term,docid, tf)键值对,map时将term和docid组合起来形成复合键term,docid。 但会引起新的问题,同一个term下的所有posting信息无法被分区到同一个Reduce节点, 为此,需要实现一个新的Partitioner:从term, docid中取出term,以term作为key进行分区。 一、复合键值对的使用--用复合键让系统完成排序 8 一、复合键值对的使用--用复合键让系统完成排序 9 Customized Partitioner 进入reduce的键值对按照(term, docid)排序 一、复合键值对的使用 10 2、把小的键值对合并成大的键值对 通常一个计算问题会产生大量的键值对,为了减少键值对传输和排序的开销,一些问题中的大量小的键值对可以被合并成一些大的键值对(pairs-stripes)。 以“单词同现矩阵算法”为例 一、复合键值对的使用--把小的键值对合并成大的键值对 11 单词同现矩阵算法 一个Map可能会产生单词a与其它单词间的多个键值对,这些键值对可以在Map过程中合并成右侧的一个大的键值对(条): 然后,在Reduce阶段,把每个单词a的键值对(条)进行累加: (a, b) → 1 (a, c) → 2 (a, d) → 5 (a, e) → 3 (a, f) → 2 a → { b: 1, c: 2, d: 5, e: 3, f: 2 } 一、复合键值对的使用--把小的键值对合并成大的键值对 12 单
有哪些信誉好的足球投注网站
文档评论(0)