说明:这个问题是之前在上家,hive版本是hive-1.1.0,集群规模不大,当时只有500多台
一个周五将要下班的时候接到同事的电话说一个作业丢数据了将近200万,顿时隐隐感觉不妙,立马投入查看作业日志的进程中。分析作业日志发现临时表的结果输出是正确的,插入目标表的行数是不正确(下面有图说明),当时推断以为是插入目标表出现的错误,然后就分析插入目标的mapreduce日志,通过计算还真发现少读了一个文件,但是这个mapreduce日志又没有任何错误和警告,都是成功的,头大了。这台调度作业的机器是新机器,还以为是这个原因导致的,分析发现和新机器无关。同时把作业放到机器上重新跑生成临时表,看看结果是否正确。一跑两个小时,等到结果出来了,一看数据也丢失了,大喜!能复现,这就好办了,容易查找问题了。
生成临时表的输出的统计信息(这个数据是正确的)
生成目标表输出的统计信息(这个数据是错误的)