Hadoop概念学习系列之谈hadoop/spark里为什么都有,键值对呢?(四十)
很少有人会这样来自问自己?只知道,以键值对的形式处理数据并输出结果,而没有解释为什么要以键值对的形式进行。 包括hadoop的mapreduce里的键值对,spark里的rdd里的map等。 这是为什么呢? 1、键值对的具体含义 首先,我们会通过强调Java标准库中的类似概念,来阐明我们所说的键值对的含义。 java.util.Map接口是常用类,如HashMap,甚至原始Hashtable的父类(通过向后重构代码库)。 对于任何Java Map对象,其内容是从指定类型的给定键到相关值的一组映射,键与值的数据类型可能不同。例如,一个HashMap对象可以包含从人名(String)到其生日(Date)的一组映射。 Hadoop中的数据包含与相关值关联的键。这些数据的存储方式允许对数据集的不同值根据键进行分类和重排。如果使用键值对数据,应该会有如下疑问: 1、在数据集中,一个给定的键必然有映射值吗? 2、给定键的关联值是什么? 3、键的完整集合是什么? 回忆我们很熟悉的wordcount吧。该程序的输出显然是键/值关系的组合。对于每个字(键),都有对应着它出现的次数(值)。 键/值数据...