使用 navicat 连接hadoop的mysql数据库(元数据存储在 mysql中) , 看下删除内部表和删除外部表之后 的区别 ,比如 元数据是否仍然还在 。 在 hadoop-master上有一个 mysql数据库 ,账号密码为 :root/Aa123456 库名是 hive
时间: 2024-02-11 15:07:33 浏览: 93
好的,我明白了你的问题。首先,让我解释一下内部表和外部表的概念。
内部表是存储在Hive的默认数据仓库中的表,数据和元数据都存储在Hive中。删除内部表时,元数据也会被删除。
外部表是指表的数据存储在Hadoop的文件系统中,而表的元数据存储在Hive的默认数据仓库中。删除外部表时,元数据仍然存在,但是表的数据会被删除。
现在回到你的问题,使用Navicat连接Hadoop的MySQL数据库(元数据存储在MySQL中),删除内部表和外部表之后,元数据是否仍然存在的问题。答案是:在删除内部表时,元数据也会被删除;在删除外部表时,元数据仍然存在。
具体操作步骤如下:
1. 打开Navicat,连接到Hadoop的MySQL数据库(账号密码为root/Aa123456,库名是hive)。
2. 执行以下SQL语句,创建一个内部表:
```
CREATE TABLE my_table (id INT, name STRING);
```
3. 执行以下SQL语句,创建一个外部表:
```
CREATE EXTERNAL TABLE my_external_table (id INT, name STRING)
LOCATION '/user/hive/my_external_table';
```
4. 删除内部表:
```
DROP TABLE my_table;
```
此时,使用DESCRIBE命令查看my_table表时,会提示“Table not found”。
5. 删除外部表:
```
DROP TABLE my_external_table;
```
此时,使用DESCRIBE命令查看my_external_table表时,会提示“Table not found”,但是在MySQL中,元数据仍然存在。
总之,无论是内部表还是外部表,删除操作都是不可逆的。因此,在删除表之前,请务必确认是否备份了数据和元数据。
阅读全文