题目来源 最全腾讯等BAT大数据面试99题 以下答案仅供参考,如有错误请指正

1. hadoop中两个大表实现join的操作,简单描述?

并没有抓到该题的关键,请大佬指教;
关于Hive的Join 参考链接 Hive基础二(join原理和机制,join的几种类型,数据倾斜简单处理)


2. Hive中存放是什么?

表(数据+元数据)。 存的是和hdfs的映射关系,hive是逻辑上的数据仓库,实际操作的都是hdfs上的文件,HQL就是用sql语法来写的mr程序。


3. Hive与关系型数据库的关系?

没有任何关系。Hive是为了方便数据查询减少MR程序的编写,是一次写多次读的操作,不能进行实时的CRUD操作。


4. 讲一下数据库,SQl ,左外连接, 原理,实现?

参考链接 MySQL查询优化——连接以及连接原理


5. 大表和小表join?

可以通过/* + streamtable(表) */指定大表,或通过 /* + mapjoin(表) */指定小表
指定后会将小表数据放入内存更快的join;若不指定 join 默认将最后一个表作为大表;
通常 每次写join时可将小表放左侧,大表放右侧


6. 数据清洗怎么做的?怎么用spark做数据清洗?


7. Hadoop中二次排序怎么做?

参考链接 如何在Map-Reduce中实现二次排序(对Value排序)


8. hadoop常见的join操作?

(1) reduce side join:是最简单的join操作,主要是在reduce端进行join操作;
(2) Map side join:之所以存在reduce side join,是因为在map端不能获得需要连接的全部的字段。Reduce side join比较低效,因为shuffle传输数据需要消耗大量的性能。
(3) Semijoin:半连接,对于reduce side join,跨机器的数据传输量特别大,成为join的一个瓶颈。如果能在map端过滤掉不会参加join的数据,那么可以大大节省网络IO。


9. hive优化有哪些?

  1. Map优化
  2. reduce优化
  3. join优化

参考链接 Hive-优化 密码:ibean.top


10. 分析函数?

参考链接 Hive分析函数