我有幾個疑問需要澄清:
- 如果我創建了一個沒有“External”關鍵字的表,但指定了“location”,那么它是配置單元中的外部表還是內部表?
- 如果我使用帶有表名的“external”關鍵字但未指定“位置”,它將被保存到默認存盤的配置單元/倉庫位置。在這種情況下,它會是一個外部表嗎?
總的來說,我想了解是什么使表成為外部的,關鍵字“外部”或指定“位置”。任何幫助將不勝感激。
uj5u.com熱心網友回復:
如果我創建了一個沒有“External”關鍵字的表,但指定了“location”,那么它是配置單元中的外部表還是內部表?
它將是 MANAGED 表 (EXTERNAL=False)。您可以使用DESCRIBE FORMATTED tablename;
如果我使用帶有表名的“external”關鍵字但不指定“位置”,它將被保存到默認存盤的配置單元/倉庫位置。在這種情況下,它會是一個外部表嗎?
是的,它將是 EXTERNAL 表。
是什么使表成為外部的,關鍵字“外部”或指定“位置”
只有 CREATE TABLE 中的 EXTERNAL 屬性/關鍵字才能生成 EXTERNAL TABLE,而不是位置。EXTERNAL 表屬性最初與位置無關。EXTERNAL 與否 EXTERNAL(MANAGED) 定義了 DROP TABLE 的行為:對于 EXTERNAL 表,DROP TABLE 不會洗掉表位置,只會洗掉表元資料。對于托管表 DROP TABLE 將洗掉它的所有資料檔案以及元資料的位置。托管表和外部表支持的功能也存在差異
在 Hive 的早期版本中,托管表或外部表的位置沒有限制,并且可以在 hive.metastore.warehouse.dir 之外創建 MANAGED 表。如果未指定 LOCATION,則 hive 將為托管表和外部表使用 hive.metastore.warehouse.dir 的值。您可以在同一位置上創建托管表和外部表:https : //stackoverflow.com/a/54038932/2700344。
另見https://stackoverflow.com/a/56957960/2700344和https://stackoverflow.com/a/67073849/2700344
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/349339.html
