1

次のように、バケットをクラスタ化して並べ替えたテーブルを作成しました。

set hive.enforce.bucketing = true;
set mapred.reduce.tasks = 32;

create table my_table
(  
    a          string
   , b          string
   , c          int
)
clustered by (a, b) sorted by (a, b) into 32 buckets
row FORMAT delimited fields TERMINATED BY ','
stored AS parquet
tblproperties ('parquet.compress'='SNAPPY');

データは次のように挿入されました。

insert into table my_table select * from old_table;

クエリを実行すると:

select * from my_table limit 100;

ソートされていない結果が得られます。テーブルがソートされていないということですか?aこのテーブルを他のテーブルと結合する場合、このテーブルのソートマージ結合は機能しますbか?

BDW: old_table (含まれている distribute by および sort by への挿入) を次のように照会すると: ソートされたselect * from old_table limit 100;結果が得られます。

4

1 に答える 1

0

バケット化を強制するように Hive を設定しましたが、データを新しいテーブル「my_table」に挿入する前に、並べ替えを強制するように Hive を設定する必要もあります。これを試して:

hive.enforce.sorting=true;

次に、新しいテーブルで並べ替えられた結果を取得する必要があります。

于 2015-02-25T16:02:05.417 に答える