하이브에 20 개의 열이있는 테이블이 있는데 시간당 고유 한 레코드와 모든 레코드를 계산하려고합니다.하이브 카운트 및 개수 고유하지 않음
테이블과 같이 보인다 :
CREATE EXTERNAL TABLE test1(
log_date string,
advertiser_creatives_id string,
cookieID string,
)
STORED AS ORC
LOCATION "/day1orc"
tblproperties ("orc.compress"="ZLIB");
그리고 내 쿼리 같은 :
SELECT Hour(log_date),
Count(DISTINCT cookieid) AS UNIQUE,
Count(1) AS impressions
FROM test1
GROUP BY Hour(log_date);
그러나 결과가 올바르지 않습니다. 나는 약 7 천만 개의 항목을 가지고 있습니다. 노출 수의 합계를 계산할 때만 8 백만이됩니다. 그래서 고유 한 항목이 너무 많은 열을 차지한다고 생각합니다.
그래서 어떻게 수정하여 정확한 노출 수를 얻을 수 있습니까? 가 활성화되지 않도록
** 추가 정보는 **
hive.vectorized.execution.enabled
가 정의되어 있지 않습니다. COUNT(DISTINCT cookieID)
70643229
결과의 : 70,643,229
결과 COUNT(cookieID)
의 : 1,440,195
TEXT 형식의 동일한 쿼리 (약 270 만)
결과 COUNT(*)
의 더 적은 행을 반환 건배
하이브 0.11 또는 하이브 0.12? 문제를 재현하는 데이터 파일을 공유 할 수 있습니까? –
하이브 0.12 및 데이터 공유 할 광산 아니지만 모든 합계가 합계되지 않습니다. 7 천만 기록하지만 내가 그것을 셀 때 나는 단지 800 만 얻을. – darkownage
쿼리에 대해 EXPLAIN을 게시 할 수 있습니까? 언제든지 벡터 라이 제이션을 활성화하지 않았습니다 ('set hive.vectorized.execution.enabled = true;')? –