也许当您在标题中看到“语义错误”时,您认为它是语法错误?当然不是,我会告诉你发生了什么。
hive> use android;
OK
Time taken: 0.223 seconds
hive> desc tb_user_basics;
OK
col_datetime string
col_is_day_new string
col_is_hour_new string
col_ch string
...
p_date string
p_hourmin string
Time taken: 0.189 seconds
hive> select count(distinct col_udid) from android.tb_user_basics where p_date>='20121001' and p_date<='20121231';
FAILED: Error in semantic analysis: org.apache.thrift.transport.TTransportException: java.net.SocketTimeoutException: Read timed out
hive>
>
> select count(distinct col_udid) from android.tb_user_basics where p_date>='20121001' and p_date<='20121231';
FAILED: Error in semantic analysis: Unable to fetch table tb_user_basics
我很确定该表确实存在于数据库 android 中。第一条语句失败后,似乎表丢失了。(即使我在表名中添加了db前缀)
我想知道是不是因为数据量很大,也许你注意到时间范围是[20121001, 20121231]。我之前多次运行该命令,总是引发此错误。但是如果我把条件改成“p_date='20121001'”,语句就可以正常运行了。(因为体积更小?)
期待你的回答,谢谢。