在hive中,会有这样一种情形:

1、创建一个分区外部表A(比如A表有5个字段),并且向A表里指定的分区(比如20160928这个分区)里插入数据

2、发现A表缺少一些字段,因为存在元数据不实时更新的问题,不想更新元数据,就进行删表重新建表B(表B与表A除了多了几个字段外,别的都一样)

3、再执行hql脚本,把最新的字段样式的数据插入到20160928这个分区里

会出现如下的报错:

Failed with exception java.io.IOException: rename for src path: hdfs://bdc/are_wek/date=20160928/.hive-staging_hive_xxxxxx-1/-ext-10000/000000_0 to dest path:hdfs://bdc/are_wek/date=20160928/000000_0 returned false
FAILED: Execution Error, return code 1 from
org.apache.hadoop.hive.ql.exec.MoveTask. java.io.IOException:
rename for src path: hdfs://bdc/are_wek/date=20160928/.hive-staging_hive_xxxxxxx-1/-ext-10000/000000_0 to dest path:hdfs://bdc/are_wek/date=20160928/000000_0
returned false

这个错误是指hadoop在把hql执行结果从临时文件挪到对应的表所在的目录时出错;

出现这个问题的原因是:

1、我只是drop了表,其实只是删除了表的元数据,但是表对应的数据文件依然还在hdfs上;

2、hive在把临时文件挪移到正式目录时,会先对hdfs上的文件做一个判断,如果文件夹不存在那就创建,如果存在那就直接把文件挪移过去,这样就等于把临时文件夹里的000000_0文件挪到正式目录下,这时候正式目录已经有了一个叫000000_0的文件,所以就会报如上的错误

解决办法:

hadoop fs -rmr /bdc/are_wek/date=20160928/*

把对应的数据文件删除即可

感谢:http://blog.sina.com.cn/s/blog_b82e70870102x3oz.html

最新文章

  1. Spring源码分析——资源访问利器Resource之接口和抽象类分析
  2. popover带箭头弹框
  3. wiredtiger - hazard pointers
  4. html5中上传图片
  5. [Unity 游戏设计的元素]
  6. ajax 如何实现页面跳转
  7. 利用sqlclr实现数据库服务器端数据加密解密
  8. Flask -- 消息闪现、错误处理
  9. 内核kconfig语法及原理
  10. Robot Framework+Oracle
  11. 原创 :nfs软件服务利用ansible实现一键化部署
  12. SQL强化(二) 在Oracle 中写代码
  13. Android中的分层----service 层,domain层,dao 层,action层等设计
  14. SpringSecurityOAuth使用JWT Token实现SSO单点登录
  15. 从零开始学 Web 之 JavaScript(三)函数
  16. Android开发——为EditText添加烟花效果的实现
  17. Mina.Net实现的UDP多路广播
  18. Maven构建Web项目
  19. python 函数赋值
  20. Asp.Net操作MySql数据库增删改查

热门文章

  1. MQTT协议 局域网和广域网 云服务器和虚拟主机、VPS SSH和FTP、SFTP
  2. Java Int类型与字符,汉字之间的转换
  3. 开发规范(二)如何写单元测试 By 阿里
  4. Raft算法系列教程4:日志不一致的解决
  5. String Boot有哪些优点
  6. JDBC访问数据库的基本步骤是什么?
  7. 本地项目上传至GitHub
  8. SLA
  9. mysql performance storage engine
  10. docker nginx 自定义配置容器