配置单元中的外部表按年、月和日进行分区。那么,以下查询是否从外部表中删除此查询中引用的特定分区的数据-
ALTER TABLE MyTable DROP IF EXISTS PARTITION(year=2016,month=7,day=11);
fsi0uk1n1#
分区方案不是数据。分区方案是存储在元数据中的表ddl的一部分(简单地说:分区键值+存储数据文件的位置)。数据本身存储在分区位置(文件夹)的文件中。如果删除外部表的分区,则该位置保持不变,但作为分区卸载(关于该分区的元数据将被删除)。可以卸载几个版本的分区位置(例如以前的版本)。您可以删除分区并挂载另一个位置作为分区(altertableaddpartition)或更改现有分区位置。同时删除外部表不要删除包含文件的表/分区文件夹。稍后您可以在此位置的顶部创建表。为了更好地理解外部表/分区的概念,请看这个答案:可以在hdfs中的同一位置上创建多个表(同时是托管表和外部表)。
uujelgoq2#
没有外部表只有将被删除的引用,实际文件仍将保留在该位置。外部表数据文件不属于表,也不移动到配置单元仓库目录只有分区元将从配置单元元存储表中删除。。内外表的区别:对于外部表-外部表在hdfs服务器上存储文件,但表没有完全链接到源文件。如果删除了外部表,则该文件仍保留在hdfs服务器上。例如,如果您使用配置单元ql在配置单元中创建一个名为“table\u test”的外部表,并将该表链接到文件“file”,那么从配置单元中删除“table\u test”不会从hdfs中删除“file”。任何有权访问hdfs文件结构的人都可以访问外部表文件,因此需要在hdfs文件/文件夹级别管理安全性。元数据是在主节点上维护的,从配置单元中删除一个外部表时,只删除元数据而不删除数据/文件。对于内部表格-存储在基于hive.metastore.warehouse.dir中设置的目录中,默认情况下,内部表存储在以下目录“/user/hive/warehouse”中,您可以通过更新配置文件中的位置来更改它。删除表将分别从主节点和hdfs中删除元数据和数据。内部表文件安全仅通过配置单元控制。安全性需要在hive中进行管理,可能是在模式级别(取决于组织到组织)。配置单元可能有内部或外部表这是一个影响数据加载、控制和管理方式的选择。在下列情况下使用外部表:数据也在Hive外使用。例如,数据文件由不锁定文件的现有程序读取和处理。即使在删除表之后,数据也需要保留在基础位置。如果您将多个模式(表或视图)指向一个数据集,或者迭代各种可能的模式,则可以应用这种方法。配置单元不应该拥有数据和控制设置、目录等,您可能有另一个程序或进程来执行这些操作。您没有基于现有表(如选择)创建表。在下列情况下使用内部表:数据是临时的。您希望hive完全管理表和数据的生命周期。注意:元表,如果您将在数据库中查找(配置的详细信息)
|BUCKETING_COLS | | COLUMNS | | DBS | | NUCLEUS_TABLES | | PARTITIONS | | PARTITION_KEYS | | PARTITION_KEY_VALS | | PARTITION_PARAMS | | SDS | | SD_PARAMS | | SEQUENCE_TABLE | | SERDES | | SERDE_PARAMS | | SORT_COLS | | TABLE_PARAMS | | TBLS |
2条答案
按热度按时间fsi0uk1n1#
分区方案不是数据。分区方案是存储在元数据中的表ddl的一部分(简单地说:分区键值+存储数据文件的位置)。
数据本身存储在分区位置(文件夹)的文件中。如果删除外部表的分区,则该位置保持不变,但作为分区卸载(关于该分区的元数据将被删除)。可以卸载几个版本的分区位置(例如以前的版本)。
您可以删除分区并挂载另一个位置作为分区(altertableaddpartition)或更改现有分区位置。同时删除外部表不要删除包含文件的表/分区文件夹。稍后您可以在此位置的顶部创建表。
为了更好地理解外部表/分区的概念,请看这个答案:可以在hdfs中的同一位置上创建多个表(同时是托管表和外部表)。
uujelgoq2#
没有外部表只有将被删除的引用,实际文件仍将保留在该位置。
外部表数据文件不属于表,也不移动到配置单元仓库目录
只有分区元将从配置单元元存储表中删除。。
内外表的区别:
对于外部表-
外部表在hdfs服务器上存储文件,但表没有完全链接到源文件。
如果删除了外部表,则该文件仍保留在hdfs服务器上。
例如,如果您使用配置单元ql在配置单元中创建一个名为“table\u test”的外部表,并将该表链接到文件“file”,那么从配置单元中删除“table\u test”不会从hdfs中删除“file”。
任何有权访问hdfs文件结构的人都可以访问外部表文件,因此需要在hdfs文件/文件夹级别管理安全性。
元数据是在主节点上维护的,从配置单元中删除一个外部表时,只删除元数据而不删除数据/文件。
对于内部表格-
存储在基于hive.metastore.warehouse.dir中设置的目录中,默认情况下,内部表存储在以下目录“/user/hive/warehouse”中,您可以通过更新配置文件中的位置来更改它。删除表将分别从主节点和hdfs中删除元数据和数据。内部表文件安全仅通过配置单元控制。安全性需要在hive中进行管理,可能是在模式级别(取决于组织到组织)。
配置单元可能有内部或外部表这是一个影响数据加载、控制和管理方式的选择。
在下列情况下使用外部表:
数据也在Hive外使用。例如,数据文件由不锁定文件的现有程序读取和处理。即使在删除表之后,数据也需要保留在基础位置。如果您将多个模式(表或视图)指向一个数据集,或者迭代各种可能的模式,则可以应用这种方法。配置单元不应该拥有数据和控制设置、目录等,您可能有另一个程序或进程来执行这些操作。您没有基于现有表(如选择)创建表。
在下列情况下使用内部表:
数据是临时的。您希望hive完全管理表和数据的生命周期。
注意:元表,如果您将在数据库中查找(配置的详细信息)