Hive - 在索引或排序列中搜索读取整个存储桶

时间:2016-03-31 09:09:16

标签: sorting hive bucket orc

配置单元中的查询请勿使用排序读取整个广告素材。这是正常的还是一种误解。

表:

col_a; col_b; values;
  1. 规格:

    • 我的表格被排除并按" col_a"排序。柱。
    • 表格具有ORC格式
  2. 结果:

    • 当我查询" col_a"时,读取整个桶
    • 当我索引" col_b"和查询" col_b",读取整个桶
  3. 表格配置:

    • inputFormat: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
    • bucketCols:[col_a]
    • sortCols:col_a
    • 订单:1
  4. 插入以填充表格并选择获取值:

    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;
    
  5. 我的想法

    我认为排序可以让我们不读取整个存储桶,但允许我们访问特定的行或行范围。我还以为索引可以在一个桶中给我们一行或一个范围。我错了吗 ?顺便说一下,谢谢你的时间!

0 个答案:

没有答案