学习 Hive(四):桶

桶(Bucket)是优化查询的另一种方式。 不同于分区,桶对应着 HDFS 中的文件片段(segment)。 首先,指定表中的列来确定如何划分桶。 然后,Hive 对值进行哈希并将结果除以桶的个数取余数。 最后,计算结果相同的记录将被分配到同一个桶内(文件片段)。 注意: 桶的数量,尽量是2的倍数 Reduce 任务的数量尽量等于桶的数量 由于 Load 并不会使用元数据对数据进行校验,所以不能像其它表一样使用 Load »

学习 Hive(三):分区

分区(partition)是 Hive 优化查询的一种方式。 默认情况下,Hive 中的查询会扫描整张表,当查询一张极大的表时会严重降低查询性能。 在 Hive 中,每个分区对应着一个预定义的分区列,并存储在 HDFS 中表目录的子目录下。 创建分区表 CREATE TABLE IF NOT EXISTS friends_partition ( id INT, »

学习 Hive(二):从文本到 Parquet

Hive 原生支持以下文件格式: Text File SequenceFile Avro Files ORC Files Parquet 其中 Text File、SquenceFile 和 Avro Files 为行式存储,Parquet 和 ORC Files 为列式存储。 Parquet 与 ORC »

学习 Hive(一):Hive 初探

架构 下图展示了 Hive 的架构: Driver Driver 组件接收来自 Thift Server、Web Interface 和 Command Line 的查询。 Compiler Compiler 组件解析查询。 Compiler 对查询语句进行语义分析,并最终从 metastore 中查询表和分区元数据生成一个查询计划。 Meta Store Meta »