hive将表变成外部表
时间: 2024-02-24 16:51:17 浏览: 41
要将Hive表变成外部表,可以按照以下步骤操作:
1. 使用`ALTER TABLE`命令设置表的属性为外部表。将`EXTERNAL`属性设置为`TRUE`。
```sql
ALTER TABLE 表名 SET TBLPROPERTIES("EXTERNAL"="TRUE");
```
2. 使用`DESC FORMATTED`命令查看表的结构,确认表已经变成外部表。
```sql
DESC FORMATTED 表名;
```
如果要将外部表转回内部表,可以将`EXTERNAL`属性设置为`FALSE`。
```sql
ALTER TABLE 表名 SET TBLPROPERTIES("EXTERNAL"="FALSE");
```
请注意,删除表时,内部表会删除HDFS对应路径,而外部表不会删除HDFS对应路径。无论是内部表还是外部表,删除表都会删除元数据。
相关问题
hive内部表外部表区别
Hive中的内部表和外部表有以下区别:
1. 创建方式:内部表是通过不使用关键字external创建的,而外部表是使用关键字external创建的。
2. 数据管理:创建内部表时,Hive会将数据移动到数据仓库指定的路径;而创建外部表时,仅记录数据所在的路径,不对数据的位置做任何改变。
3. 删除表时:删除内部表时,Hive会同时删除元数据和数据,包括对应的HDFS路径;而删除外部表时,只会删除元数据,不会删除数据和HDFS路径。
4. 安全性和灵活性:由于外部表不删除数据,相对来说更加安全,也更加灵活,可以方便地共享源数据。
因此,内部表和外部表在数据管理、删除方式和数据安全性等方面存在差异。
hive创建中文名外部表
在Hive中创建中文名的外部表,可以按照以下步骤进行操作:
1. 首先,确保Hive的配置文件中设置了支持中文字符的编码方式。可以在hive-site.xml文件中添加以下配置:
```
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.charset</name>
<value>UTF-8</value>
</property>
<property>
<name>hive.metastore.client.character.encoding</name>
<value>UTF-8</value>
</property>
```
2. 创建外部表时,可以使用中文字符作为表名。例如,创建一个名为"中文表"的外部表,可以使用如下语句:
```
CREATE EXTERNAL TABLE `中文表` (
`col1` string,
`col2` int
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/path/to/table';
```
3. 在创建外部表时,需要注意以下几点:
- 使用反引号(`)将中文表名括起来,以避免与Hive关键字冲突。
- 指定正确的列定义和分隔符。
- 指定正确的表数据存储位置。
4. 创建完成后,可以通过查询语句对该外部表进行操作,例如:
```
SELECT * FROM `中文表`;
```