请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Spark删除hive表后HDFS对应目录文件没有被删除

描述:使用SparkSQL往Hive中saveAsTable了一张表,查看表的desc,发现它是一个内部表,然后再beeline里面使用drop table将其删除,再次跑jar,抛出hdfs目录已存在异常。

问题:请问老师,记得之前的Hadoop课程中说过,如果是hive内部表,在删除内部表之后,hdfs存储的文件也应该被删除,为什么使用spark sql beeline删除表后,hdfs对应的文件仍然存在呢?
图片描述

正在回答 回答被采纳积分+3

1回答

Michael_PK 2020-07-22 18:15:21

有个问题要确认下,你spark代码写进去的表和beeline连都确定是同一个metastore数据吗,换句话说元数据是不是同一份

0 回复 有任何疑惑可以回复我~
  • 提问者 某不入流码农 #1
    是的,和视频一致,把hive-site.xml复制到spark里面的,然后代码是通过读取mysql表的数据,然后用saveAsTable写出的,并开启了hive支持,在代码里面show tables和beeline show tables内容也都是一致的
    回复 有任何疑惑可以回复我~ 2020-07-22 18:22:38
  • Michael_PK 回复 提问者 某不入流码农 #2
    内部表是删除的时候元数据和数据都会被删掉,但是根据你的描述是没删掉。这样子,你按照这个顺序来测试下,不打包运行,直接sparkshell启动后把代码贴进去运行,然后运行完,还是在sparkshell里面执行spark.sql里面传入删表操作,最后到hdfs验证下。我当心你打包运行的时候是不是hivesite没打引起的,你可以按照我的步骤验证下
    回复 有任何疑惑可以回复我~ 2020-07-22 19:50:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信