DDL-分区表&桶表
发布网友
发布时间:2024-10-05 21:21
我来回答
共1个回答
热心网友
时间:2024-10-05 21:21
当大数据量的查询效率受全表扫描影响时,分区表和桶表是优化工具。分区表通过按特定字段(如日期)划分数据,将数据分组存储,如分析日志时按天,能显著提升查询性能。创建分区表时,使用PARTITIONED BY关键字,每个分区对应HDFS目录。动态分区在不知晓数据分区时,根据插入数据实时分配。
桶表则是更细粒度的划分,通过clustered by字段计算哈希值决定数据位置,每个桶对应HDFS文件。创建桶表时,确保数据正确导入,如Hive 3.1.1直接加载本地数据。桶表通过桶号计算方法(哈希值取余)组织存储,如bigint类型字段id,桶数为2,会根据id的奇偶性分别存储在不同文件。
桶表的优点在于采样操作,仅针对需要查询的桶进行扫描,避免全表扫描。对于map side joins,当两张表在共有字段上桶号匹配,仅需在对应桶内进行join,减少计算复杂度。但是,要注意桶内数据大小和内存管理,以及选择合适的参考资源以确保优化效果。