8

現在、Hive でデータ探索を行っていますが、次の動作を説明できません。フィールド master_id を持つテーブル (mytable という名前) があるとします。

取得する行数を数えると

select count(*) as c from mytable 
c
1129563

null 以外の master_id を持つ行の数をカウントしたい場合は、より高い数を取得します

select count(*) as c from mytable where master_id is not null
c
1134041

さらに、master_id が null になることはないようです。

select count(*) as c from mytable where master_id is null
c
0

whereステートメントを追加すると、最終的に行数が増える可能性があることを説明できません。この動作を説明するヒントはありますか?

ありがとう

4

1 に答える 1

10

ほとんどの場合、このパラメーターが設定されているため、where のないクエリが統計を使用しています。

set hive.compute.query.using.stats=true;

false に設定して、もう一度実行してみてください。

または、テーブルの統計を計算することもできます。ANALYZE TABLE SYNTAXを参照してください。

また、INSERT OVERWRITE 中に自動的に統計を収集することもできます。

set hive.stats.autogather=true;
于 2016-10-07T09:44:55.797 に答える