Sql 蜂巢计数和计数不一致不正确
我在配置单元中有一个表,它有20列,我想计算每小时的唯一记录和所有记录 表如下所示: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_
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)来尝试相同的数据,并将差异发回(如果有)吗?在我的帖子中添加了额外的信息:)