我有一张 hive 的table XYZ 数据库命名 ABC .当我跑的时候 describe formatted XYZ.ABC; 从hue,我得到了以下信息。。就是这样
XYZ
ABC
describe formatted XYZ.ABC;
Table Type: MANAGED_TABLE Table Parameters: EXTERNAL True
那么,这实际上是一个外部配置单元表还是一个托管/内部配置单元表?
uxhixvfz1#
这被视为 EXTERNAL table。删除表将保留底层 HDFS 数据。表类型显示为 MANAGED_TABLE 因为参数 EXTERNAL 设置为 True ,而不是 TRUE .要修复此元数据,可以运行以下查询:
EXTERNAL
HDFS
MANAGED_TABLE
True
TRUE
hive> ALTER TABLE XYZ.ABC SET TBLPROPERTIES('EXTERNAL'='TRUE');
一些细节:table XYZ.ABC 必须通过此类查询创建:
XYZ.ABC
hive> CREATE TABLE XYZ.ABC <additional table definition details> TBLPROPERTIES ( 'EXTERNAL'='True');
描述此表将给出:
hive> desc formatted XYZ.ABC; : Location: hdfs://<location_of_data> Table Type: MANAGED_TABLE : Table Parameters: EXTERNAL True
删除此表将保留中引用的数据 Location 在 describe 输出。
Location
describe
hive> drop table XYZ.ABC; # does not drop table data in HDFS
这个 Table Type 仍然显示为 MANAGED_TABLE 这让人困惑。创造价值 EXTERNAL 作为 TRUE 会解决这个问题的。
Table Type
现在,做一个 describe 将按预期显示:
hive> desc formatted XYZ.ABC; : Location: hdfs://<location_of_data> Table Type: EXTERNAL_TABLE : Table Parameters: EXTERNAL TRUE
7fyelxc52#
让我们创建一个示例托管表,
CREATE TABLE TEST_TBL(abc int, xyz string); INSERT INTO TABLE test_tbl values(1, 'abc'),(2, 'xyz'); DESCRIBE FORMATTED test_tbl;
将类型更改为外部(以错误的方式使用 True ,而不是 TRUE ):
ALTER TABLE test_tbl SET TBLPROPERTIES('EXTERNAL'='True');
这给了,现在让我们放下table,放下table测试;结果是:表被删除,但hdfs上的数据没有被删除。显示正确的外部表行为!如果我们重新创建表,我们可以看到数据存在:
CREATE TABLE test_tbl(abc int, xyz string); SELECT * FROM test_tbl;
结果:描述错误地显示为 MANAGED TABLE 随着 EXTERNAL True 因为:.equals签入元Hive问题jira:hive-20057建议的修复方法:不区分大小写
MANAGED TABLE
EXTERNAL True
2条答案
按热度按时间uxhixvfz1#
这被视为
EXTERNAL
table。删除表将保留底层HDFS
数据。表类型显示为MANAGED_TABLE
因为参数EXTERNAL
设置为True
,而不是TRUE
.要修复此元数据,可以运行以下查询:
一些细节:
table
XYZ.ABC
必须通过此类查询创建:描述此表将给出:
删除此表将保留中引用的数据
Location
在describe
输出。这个
Table Type
仍然显示为MANAGED_TABLE
这让人困惑。创造价值
EXTERNAL
作为TRUE
会解决这个问题的。现在,做一个
describe
将按预期显示:7fyelxc52#
示例-
让我们创建一个示例托管表,
将类型更改为外部(以错误的方式使用
True
,而不是TRUE
):这给了,
现在让我们放下table,放下table测试;
结果是:
表被删除,但hdfs上的数据没有被删除。显示正确的外部表行为!
如果我们重新创建表,我们可以看到数据存在:
结果:
描述错误地显示为
MANAGED TABLE
随着EXTERNAL True
因为:.equals签入元
Hive问题jira:hive-20057
建议的修复方法:不区分大小写