当前位置: 首页 > 面试题库 >

用mapreduce实现10亿级以上数据的kmeans

斜俊
2023-03-14
本文向大家介绍用mapreduce实现10亿级以上数据的kmeans相关面试题,主要包含被问及用mapreduce实现10亿级以上数据的kmeans时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

算法1.map(key,value)

输入:全局变量centers,偏移量key,样本value

输出:<key’,value>对,其中key’是最近中心的索引,value’是样本信息的字符串

从value构造样本的instance;

minDis=Double.MAX_VALUE;
Index=-1;
For i=0 to centers.length do
dis=ComputeDist(instance,centers[i]);
If dis<minDis{
minDis=dis;
index=i;
}
End For

把index作为key’;

把不同维度的values构造成value’;

输出<key’,value’>对;

End

注意这里的Step 2和Step 3初始化了辅助变量minDis和index;Step 4通过计算找出了与样本最近的中心点,函数ComputeDist(instance,centers[i])返回样本和中心点centers[i]的距离;Step 8输出了用来进行下一个过程(combiner)的中间数据。

Combine函数. 每个map任务完成之后,我们用combiner去合并同一个map任务的中间结果。因为中间结果是存储在结点的本地磁盘上,所以这个过程不会耗费网络传输的代价。在combine函数中,我们把属于相同簇的values求和。为了计算每个簇的对象的平均值,我们需要记录每个map的每个簇中样本的总数。Combine函数的伪代码见算法2.

算法2.combine(key,V)

输入:key为簇的索引,V为属于该簇的样本列表

输出:<key’,value’>对,key’为簇的索引,value’是由属于同一类的所有样本总和以及样本数所组成的字符串。

初始化一个数组,用来记录同一类的所有样本的每个维度的总和,样本是V中的元素;

初始化一个计数器num为0来记录属于同一类的样本总数;

While(V.hasNext()){

从V.next()构造样本实例instance;

把instance的不同维度值相加到数组

num++;

}

把key作为key’;

构造value’:不同维度的求和结果+num;

输出<key’,value’>对;

End

Reduce函数. Reduce函数的输入数据由每个结点的combine函数获得。如combine函数所描述,输入数据包括部分样本(同一类)的求和以及对应样本数。在reduce函数中,我们可以把同一类的所有样本求和并且计算出对应的样本数。因此,我们可以得到用于下一轮迭代的新中心。Reduce函数的伪代码见算法3。

算法3.Reduce(key,V)

输入:key为簇的索引,V为来自不同结点的部分总和的样本列表

输出:<key’,value’>对,key’为簇的索引,value’是代表新的聚类中心的字符串

初始化一个数组,用来记录同一类的所有样本的每个维度的总和,样本是V中的元素;

初始化一个计数器NUM为0来记录属于同一类的样本总数;

While(V.hasNext()){

从V.next()构造样本实例instance;

把instance的不同维度值相加到数组

NUM+=num;

}

数组的每个元素除以NUM来获得新的中心坐标;

把key作为key’;

构造value’为所有中心坐标的字符串;

输出<key’,value’>对;

End

 类似资料:
  • 本文向大家介绍Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?相关面试题,主要包含被问及Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?时的应答技巧和注意事项,需要的朋友参考一下 Elasticsearch 提供的首个近似聚合是 cardinality 度量。它提供一个字段的基数,即该字段的 distinct 或者unique 值的数目。它是基于 HLL 算

  • 本文向大家介绍ASP.NET实现数据的添加(第10节),包括了ASP.NET实现数据的添加(第10节)的使用技巧和注意事项,需要的朋友参考一下 这节以新闻网站为例实现新闻的添加,并把附件和图片上传至服务器。 学习内容 步骤一 添加新项,创建Web窗体并将其命名为“newsadd.aspx” 步骤二 布局页面,创建6行2列的表格 步骤三  数据源控件定义数据的方法,在newschuli.cs页面中编

  • 本文向大家介绍上千万或上亿的数据,统计其出现次数最多的前N个数据?相关面试题,主要包含被问及上千万或上亿的数据,统计其出现次数最多的前N个数据?时的应答技巧和注意事项,需要的朋友参考一下 做法相同,先hash到小文件,然后hashmap计数比较

  • 本文向大家介绍Mongodb中MapReduce实现数据聚合方法详解,包括了Mongodb中MapReduce实现数据聚合方法详解的使用技巧和注意事项,需要的朋友参考一下 Mongodb是针对大数据量环境下诞生的用于保存大数据量的非关系型数据库,针对大量的数据,如何进行统计操作至关重要,那么如何从Mongodb中统计一些数据呢? 在Mongodb中,给我们提供了三种用于数据聚合的方式: (1)简单

  • 我用java写了一个简单的程序来创建2个10亿大小的整型数组。我用-Xms10G,也就是10GB的内存运行这个程序,但还是出现了OOM错误。下面是片段。 就我所能想到的10亿int数组使用的内存应该是system . out . println(1000 _ 000 _ 000 * Integer。尺寸);它返回小于2GB的1,935,228,928。所以我的程序的总需求是最大4GB。 即使在方法

  • 大数据 概述 大数据: 收集到的数据已经远远超出了我们的处理能力。 大数据 场景 假如你为一家网络购物商店工作,很多用户访问该网站,其中有些人会购买商品,有些人则随意浏览后就离开。 对于你来说,可能很想识别那些有购物意愿的用户。 那么问题就来了,数据集可能会非常大,在单机上训练要运行好几天。 接下来:我们讲讲 MapRedece 如何来解决这样的问题 MapRedece Hadoop 概述 Had