我正在通过创建托管表 Impala 具体如下:
Impala
CREATE TABLE IF NOT EXISTS table_name STORED AS parquet TBLPROPERTIES ('transactional'='false', 'insert_only'='false') AS ...
这将导致 managed table 它不支持 HIVE-ACID . 但是,当我运行命令时,我仍然会得到一个外部表。为什么会这样?
managed table
HIVE-ACID
qgelzfjb1#
我在cloudera文档中发现,在创建表时忽略external关键字并不意味着表将得到明确的管理:在CREATETABLE语句中使用external关键字时,hms将该表存储为外部表。当您省略external关键字并创建托管表或摄取托管表时,hms可能会将该表转换为外部表,或者表创建可能会失败,具体取决于表属性。因此,设置 transactional=false 以及 insert_only=false 导致 External Table 在Hive元存储的解释中。有趣的是,只有 TBLPROPERTIES ('transactional'='false') does被完全忽略,仍然会导致托管表 transactional=true ).
transactional=false
insert_only=false
External Table
TBLPROPERTIES ('transactional'='false')
transactional=true
1条答案
按热度按时间qgelzfjb1#
我在cloudera文档中发现,在创建表时忽略external关键字并不意味着表将得到明确的管理:
在CREATETABLE语句中使用external关键字时,hms将该表存储为外部表。当您省略external关键字并创建托管表或摄取托管表时,hms可能会将该表转换为外部表,或者表创建可能会失败,具体取决于表属性。
因此,设置
transactional=false
以及insert_only=false
导致External Table
在Hive元存储的解释中。有趣的是,只有
TBLPROPERTIES ('transactional'='false')
does被完全忽略,仍然会导致托管表transactional=true
).