调整了一个hive表的结构,跑清洗数据脚本时遇到hive报错

return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

莫名其妙,然后查阅了百度该问题,都比较复杂(看不懂...),沉下心来排查一下,定位到运行到这行时出现问题

hive -e "use data;truncate table shellda_pvuv;insert into shellda_pvuv select '$SDATE','$HOUR',count(*) as pv,count(distinct devid) as uv,channel,version from shellda_temp_result group by channel,version;"

然后我按分号来单条测试,很是奇怪,竟然问题出现在truncate table这里...如图,百思不得其解 http://paperen.com/file/205

该不会因为表为空的所以truncate就报错,不会这么无语,试着去掉truncate,竟然OK了!

所以解决方案就是去掉truncate....

是这样的,这里的truncate是为了保证清空上次清洗的临时数据影响,其实脚本后面也会在hdfs中rm掉相关临时数据(hadoop fs -rm -r 文件绝对路径),所以这里的truncate可要可不要,而现在定位是由于truncate导致出现这个无语问题,所以只能将其去掉