Sql 蜂巢计数和计数不一致不正确

Sql 蜂巢计数和计数不一致不正确,sql,hadoop,hive,Sql,Hadoop,Hive,我在配置单元中有一个表,它有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_

我在配置单元中有一个表,它有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); 
但结果并不正确。我有大约7000万个条目,当我做一个印象总数时,我只得到大约800万条,所以我怀疑distinct考虑了太多的列

那么,我如何解决这个问题,从而获得正确的印象量呢

**额外信息**

hive.vectorized.execution.enabled
未定义,因此不处于活动状态

文本格式的相同查询返回的行更少(约270万行)

计数结果(*):70643229

计数结果(cookieID):70643229

计数的结果(不同的cookieID):1440195


干杯

我有一个例子,可能对您有用。我认为您的“行格式分隔字段终止于”有一些问题。 我有一个文本,用“\t”分隔,如下所示:

id    date      value
1   01-01-2014  10
1   03-01-2014  05
1   07-01-2014  40
1   05-01-2014  20
2   05-01-2014  10
use tmp ;
create table sw_test(id string,td string) row format delimited fields terminated by '\t' ;
LOAD DATA LOCAL INPATH '/home/hadoop/b.txt' INTO TABLE sw_test;
但我只创建了一个有2列的表,如下所示:

id    date      value
1   01-01-2014  10
1   03-01-2014  05
1   07-01-2014  40
1   05-01-2014  20
2   05-01-2014  10
use tmp ;
create table sw_test(id string,td string) row format delimited fields terminated by '\t' ;
LOAD DATA LOCAL INPATH '/home/hadoop/b.txt' INTO TABLE sw_test;
您如何看待“从sw_测试中选择td

不是

但是

所以,我认为cookie包含一些特殊的列,包括定义的分隔符。 我希望这能帮助你。
祝你好运

蜂巢0.11还是蜂巢0.12?有没有可能共享一个数据文件来重新解释问题?Hive 0.12和数据不是我的共享,但所有这些数据的总和都没有加起来。7000万条记录,但当我数出来的时候,我只得到800万条。你能发布查询的解释吗?您没有碰巧启用矢量化(
set-hive.vectoriazed.execution.enabled=true;
),是吗?另外,您可以发布检查
COUNT(*)
COUNT(cookieID)
。另外,如果可能的话,你能用任何其他格式(非ORC)来尝试相同的数据,并将差异发回(如果有)吗?在我的帖子中添加了额外的信息:)