Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 配置单元-在索引或排序列中搜索,读取整个存储桶_Sorting_Hive_Bucket_Orc - Fatal编程技术网

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

Sorting 配置单元-在索引或排序列中搜索,读取整个存储桶,sorting,hive,bucket,orc,Sorting,Hive,Bucket,Orc,配置单元中的查询不使用排序,读取整个存储桶。这是正常的还是误解 表: col_a; col_b; values; 规格: 我的桌子是按“col_a”列扣好并分类的 表具有ORC格式 结果: 当我查询“colu_a”时,将读取整个存储桶 当我索引“colu_b”并查询“col_b”时,读取的数据量超过一整桶 表配置: inputFormat:org.apache.hadoop.hive.ql.io.orc.orInputFormat outputFormat:org.apache.ha

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

表:

col_a; col_b; values;
  • 规格:

    • 我的桌子是按“col_a”列扣好并分类的
    • 表具有ORC格式
  • 结果:

    • 当我查询“colu_a”时,将读取整个存储桶
    • 当我索引“colu_b”并查询“col_b”时,读取的数据量超过一整桶
  • 表配置:

    • inputFormat:org.apache.hadoop.hive.ql.io.orc.orInputFormat
    • outputFormat:org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
    • serializationLib:org.apache.hadoop.hive.ql.io.orc.OrcSerde
    • 巴克特科尔斯:[col_a]
    • sortCols:col_a
    • 订单: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,而是允许我们访问特定行或一系列行。我还认为索引可以为我们提供一行或一个区间。我错了吗?顺便说一下,谢谢你抽出时间