Hive内部表与外部表的区别
分区:就是将同一组数据放到同一个HDFS目录下,当查询中过滤条件指定了某一个分区值时候,只将该分区对应的目录作为Input,从而减少MapReduce的输入数据,提高查询效率
分区和分桶区别
参考:处理小文件和大文件
join的类型
对于一个简单的关联查询,CommonJoin任务设计Map阶段和Reduce阶段。Mapper 从连接表中读取数据并将连接的 key 和连接的 value 键值对输出到中间文件中。Hadoop 在所谓的 shuffle 阶段对这些键值对进行排序和合并。Reducer 将排序结果作为输入,并进行实Join。Shuffle 阶段代价非常昂贵,因为它需要排序和合并。 因此减少 Shuffle 和 Reduce 阶段的代价可以提高任务性能。 MapJoin 的目的是减少 Shuffle和 Reducer阶段的代价,并仅在 Map 阶段进行Join。 Join的原理和机制
1、开启map端的聚合 2、distinct的时候使用两个Mapreduce 参考:数据倾斜
antlr是指可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器。 参考:HiveSQL解析原理
参考:Hive Sql 是怎样解析成MR job的
分析函数取topN