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