十二道MR习题 - 3 - 交集并集差集】的更多相关文章

题目 有两个文件A和B,两个文件中都有几百万行数字,现在需要找出A文件和B文件中数字集合的交集.并集.以及A对B的差集. 简单说一下思路: 这个问题关键在于key和value的设计.这里我将文件中的数字设置为key,将文件名称设置为value.这样在reduce阶段很容易就能找出A.B两个文件中数字的交并差集了. 并集就是reduce阶段能输出的全部记录:交集则需要做下过滤,即一个记录中的value需要同时有A.B两个文件的名称:差集则是文件名称集合中只包含A或B的记录. 看下用MapReduc…
题目: 需要将MR的执行结果保存到3个文件中,该怎么做. 又是一个送分题. 对于Hadoop的MapReduce来说只需要设置一下reduce任务的数量即可.MR的Job默认reduce数量是1,需要调用job的setNumReduceTasks()方法来调整reduce任务的数量. 对于spark来说,可以调用coalesce方法或repartition方法来调整分区的数量,这样也可以调整最终结果输出文件的数量.关于coalesce方法和分区的关系这里不展开了,随便搜搜就能找到了. #####…
题目: 有一个很大的文件,这文件中的内容全部都是数字,要求尝试从这个文件中找出最大的10个数字. 分析: 看起来像是一个比较简单的问题.不用大数据框架的话,也能比较轻易的实现:就是逐个读取文件中的每个数字,放到一个大顶堆结构中:将大顶堆放满以后,每读取一个数字就将之和大顶堆中的最小值进行比较,如果其大于这个最小值的话,就将其放入堆中,并将堆中的最小值删除:这样读取到最后,堆中剩下来的内容就是top 10了. 用MapReduce实现的话也说不上困难:我们只使用Map任务读取文件,而reduce中…
题目: 一个文件,大小约为100G.文件的每一行都是一个数字,要求对文件中的所有数字进行排序. 对于这个题目,了解过Hadoop的同学可以笑而不语了.即使用spark实现也是非常简单的事情. 先说下如何用Hadoop实现.实际上也没什么好说的:Map任务逐行读入数字,而后在Reduce中输出就可以了,简单粗暴到令人发指. 看下代码好了: package com.zhyea.dev; import org.apache.hadoop.conf.Configuration; import org.a…
java list 交集 并集 差集 去重复并集 package com; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Test { public static void main(String[] args) { List list1 =new ArrayList(); list1.add("1111"); list1.add("2222…
Python 求两个文本文件以行为单位的交集 并集 差集,来代码: s1 = set(open('a.txt','r').readlines()) s2 = set(open('b.txt','r').readlines()) print 'ins: %s'%(s1.intersection(s2)) print 'uni: %s'%(s1.union(s2)) print 'dif: %s'%(s1.difference(s2).union(s2.difference(s1)))…
需要用到List接口中定义的几个方法: addAll(Collection<? extends E> c) :按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾实例代码: retainAll(Collection<?> c): 仅保留此列表中包含在指定集合中的元素. removeAll(Collection<?> c) :从此列表中删除指定集合中包含的所有元素. package list; import java.util.ArrayList…
spark之交集并集差集拉链 def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator") val sc = new SparkContext(sparkConf) // TODO 算子 - 双Value类型 // 交集,并集和差集要求两个数据源数据类型保持一致 // 拉链操作两个数据源的类型可以…
前提需要明白List是引用类型,引用类型采用引用传递. 我们经常会遇到一些需求求集合的交集.差集.并集.例如下面两个集合: List<String> list1 = new ArrayList<String>(); list1.add("A"); list1.add("B"); List<String> list2 = new ArrayList<String>(); list2.add("B");…
package com; import java.util.ArrayList;import java.util.Iterator;import java.util.List; public class Test { public static void main(String[] args) {  List list1 =new ArrayList();  list1.add("1111");  list1.add("2222");  list1.add(&quo…