常见面试题①
-
7、HBase与Hive
- 首先在应用场景方面:Hive与HBase是一个协作的角色,比如海量数据的随机查询,先由Hive对数据进行ETL后交给HBase进行数据查询
- 功能方面:Hive是一个基于MapReduce的将非结构化数据转换成二维表的提供简单的HQL计算的架构是Hadoop的数据仓库。HBase则是一个列式存储的数据库主要适用于海量数据的随机查询
- 8、Spark的groupByKey 和reduceByKey之间的区别?
(1)ReducByKey再Map端时会对数据进行combine,再Map端先进行一次聚合会使得reduce端压力大大降低,如图:
(2)当采用groupByKey时,由于它不接收函数,spark只能先将所有的键值对(key-value pair)都移动,这样的后果是集群节点之间的开销很大,导致传输延时。整个过程如下:
因此,在对大数据进行复杂计算时,reduceByKey优于groupByKey。比如实际应用中,比如用groupByKey对用数据进行计算(数据量30亿条数据),可能需要1个小时,甚至内存溢出,运行失败,但是换成reduceByKey只需要十几分钟。
另外,如果仅仅是group处理,那么以下函数应该优先于 groupByKey : (1)、combineByKey 组合数据,但是组合之后的数据类型与输入时值的类型不一样。 (2)、foldByKey合并每一个 key 的所有值,在级联函数和“零值”中使用。
wordCountsWithReduce和wordCountsWithGroup与上一样
|