2016-10-07 15 views
5

Tôi hiện đang thực hiện một số khám phá dữ liệu với Hive và không thể giải thích được hành vi sau. Giả sử tôi có một bảng (có tên là mytable) với một trường master_id.Số lượng chọn HIVE (*) không trả về giá trị cao hơn số lượng đã chọn (*)

Khi tôi đếm số lượng hàng tôi nhận được

select count(*) as c from mytable 
c 
1129563 

Nếu tôi muốn đếm số lượng hàng với một null master_id thuốc, tôi nhận được một số cao hơn

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

Thêm vào đó, master_id dường như không bao giờ rỗng.

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

Tôi không thể giải thích cách thêm tuyên bố vị trí có thể tăng số lượng hàng cuối cùng. Có ai có bất kỳ gợi ý nào để giải thích hành vi này không?

Cảm ơn

+0

gì giản đồ của bảng trông như thế nào? – Kusalananda

+0

cung cấp lược đồ bảng – Beginner

Trả lời

5

lẽ Hầu hết các truy vấn của bạn mà không nơi đang sử dụng thống kê vì tham số này được thiết lập:

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

Cố gắng thiết lập nó sai và thực hiện một lần nữa.

Hoặc bạn có thể tính toán số liệu thống kê trên bảng. Xem ANALYZE TABLE SYNTAX

Ngoài ra nó có thể để thu thập thống kê trong INSERT ghi đè lên tự động:

set hive.stats.autogather=true; 
+0

Cảm ơn bạn rất nhiều. Thật vậy, nếu tôi đặt hive.compute.query.using.stats thành false, cả hai số đều khớp nhau. –

+0

Đây là một cái gì đó mới để phân tích .. Tốt nhất. –

Các vấn đề liên quan