关于hive 内外部表区别的详解

版权声明:转载请注明! https://blog.csdn.net/smile_geek_sq/article/details/81844931

本文只

启动 hive 就不说了

1 SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

如果遇到这个问题说明服务没有启动,hive --service metastore  启动即可

初学不太懂基本操作的看这里:https://www.cnblogs.com/EnzoDin/p/6951181.html

下边是建表的操作:

为了便于区别对比:首先

 先建一个不带location的内部表 student1

带location的内部表student2

 

不带location的外部表 student3

带location的外部表student4

 

show tables :

好了 需要的都创建出来了

接着开始编写数据文件

 从本地load 后:

可以看到 都有数据了

下面看hdfs中 文件的存放情况

这就是hive存数据的方式 是将数据文件拷贝至一个目录,如果未定义location,就存放在hdfs://master:9000/hive/warehous/TABLE_NAME/下

从目前看来我们还看不出 内部表和外部表的区别

下面重点来了:

把表全都删除掉,再看目录情况

 

 可以看到,内部表连目录都没了,而外部表还有数据保存下来,这就是所说的,

 删除外部表时,HDFS中的数据文件不会一起被删除。而删除内部表时,表数据及HDFS中的数据文件都会被删除。

 参考链接:https://www.cnblogs.com/qiaoyihang/p/6225151.html

猜你喜欢

转载自blog.csdn.net/smile_geek_sq/article/details/81844931