采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
描述:使用SparkSQL往Hive中saveAsTable了一张表,查看表的desc,发现它是一个内部表,然后再beeline里面使用drop table将其删除,再次跑jar,抛出hdfs目录已存在异常。
问题:请问老师,记得之前的Hadoop课程中说过,如果是hive内部表,在删除内部表之后,hdfs存储的文件也应该被删除,为什么使用spark sql beeline删除表后,hdfs对应的文件仍然存在呢?
有个问题要确认下,你spark代码写进去的表和beeline连都确定是同一个metastore数据吗,换句话说元数据是不是同一份
是的,和视频一致,把hive-site.xml复制到spark里面的,然后代码是通过读取mysql表的数据,然后用saveAsTable写出的,并开启了hive支持,在代码里面show tables和beeline show tables内容也都是一致的
内部表是删除的时候元数据和数据都会被删掉,但是根据你的描述是没删掉。这样子,你按照这个顺序来测试下,不打包运行,直接sparkshell启动后把代码贴进去运行,然后运行完,还是在sparkshell里面执行spark.sql里面传入删表操作,最后到hdfs验证下。我当心你打包运行的时候是不是hivesite没打引起的,你可以按照我的步骤验证下
登录后可查看更多问答,登录/注册
大数据工程师干货课程 带你从入门到实战掌握SparkSQL
1.0k 15
1.0k 14
1.3k 12
1.8k 12
1.3k 11