
数据算法
syssp-F
这个作者很懒,什么都没留下…
展开
-
hadoop的三种任务调度的原理
Hadoop调优方式一个MapRedcue作业是通过JobClient向master的JobTracker提交的(JobTracker一直在等待JobClient通过RPC协议提交作业),JobTracker接到JobClient的请求后把其加入作业队列中。Datanode节点的TaskTracker一直通过RPC向JobTracker发送heartbeat询问有没有任务可做,转载 2017-10-02 20:37:58 · 2711 阅读 · 0 评论 -
使用Hadoop和Spark实现二次排序
一、输入、期望输出、思路。输入为SecondarySort.txt,内容为:2000,12,04,102000,11,01,202000,12,02,-202000,11,07,302000,11,24,-402012,12,21,302012,12,22,-202012,12,23,602012,12,24,702012,12,25,102013,01,23,转载 2017-10-02 21:34:02 · 347 阅读 · 0 评论 -
使用Hadoop和Spark实现TopN算法(1)——唯一键
0.简介 TopN算法是一个经典的算法,由于每个map都只是实现了本地的TopN算法,而假设map有M个,在归约的阶段只有M x N个,这个结果是可以接受的并不会造成性能瓶颈。 这个TopN算法在map阶段将使用TreeMap来实现排序,以到达可伸缩的目的。 当然算法有两种,一种是唯一键,就是说key的类型是唯一的(是指在比较的实际阶段),比如本篇就是唯一键的TopN转载 2017-10-02 21:19:36 · 861 阅读 · 0 评论 -
选择排序
思想:选择排序的思想非常直接,从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。插入排序和选择排序的区别:选择排序是固定位置,找元素。插入排序的固定元素找位置,是两种思维方式。int[] v = new int[]{5,6,92,10,8,1,3};for(int i=0;原创 2017-10-03 10:03:21 · 259 阅读 · 0 评论 -
快速排序
快速排序是冒泡排序的改进版,也是最好的一种内排序,在很多面试题中都会出现,也是作为程序员必须掌握的一种排序方法。思想:1.在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素; 2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边; 3.对左右两个分区转载 2017-10-03 10:24:34 · 299 阅读 · 0 评论 -
插入排序---直接插入
思想:插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 插入排序方法分直接插入排序和折半插入排序两种。算法实现: /// 插入排序 static void insertion_sort(int[] unsorted) { for (int i =转载 2017-10-03 10:36:40 · 326 阅读 · 0 评论 -
插入排序--折半插入
思想:①每次插入,都从前面的有序子表中查找出待插入元素应该被插入的位置; ②给插入位置腾出空间,将待插入元素复制到表中的插入位置。 注意到该算法中,总是边比较边移动元素,下面将比较和移动操作分离开来,即先折半查找出元素的待插入位置,然后再同意地移动待插入位置之后的所有元素。当排序表为顺序存储的线性表时,可以对直接插入排序算法作如下改进:由于是顺序存储的线性表,所以查找有序子表时转载 2017-10-03 11:00:07 · 453 阅读 · 0 评论