配置单元-在索引或排序列中搜索读取整个存储桶

axkjgtzd  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(335)

配置单元中的查询不使用排序并读取整个存储桶。这是正常的还是误解。
表格:

col_a; col_b; values;

规格:
我的table是按“列a”排列的。
表具有orc格式
结果:
当我查询“col\u a”时,会读取整个bucket。
当我索引“col\u b”并查询“col\u b”时,会读取一个以上的bucket。
表配置:
输入格式:org.apache.hadoop.hive.ql.io.orc.orcinputformat
outputformat:org.apache.hadoop.hive.ql.io.orc.orcoutputformat
serializationlib:org.apache.hadoop.hive.ql.io.orc.orcserde
荞麦:[col\u a]
sortcols:列
顺序:1
插入以填充表并选择以获取值:

hive.enforce.sorting=true;
hive.enforce.bucketing=true;

FROM table_temp 
INSERT OVERWRITE TABLE table_sorted PARTITION (date=1) SELECT
col_a,
col_b
DISTRIBUTE BY col_a SORT BY col_a;

SELECT * from table_sorted where date=1 AND col_a=986123;

我的想法
我认为sort可以让我们不读取整个bucket,而是允许我们访问特定的行或一系列行。我还认为索引可以给我们一行或一个区间。我错了吗?顺便谢谢你的时间!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题