将文件添加到指向目录时,外部配置单元表是否会自行刷新

问题描述 投票:1回答:1

我在HDFS中有一个目录,每天一个已处理的文件放在该目录中,文件名中包含DateTimeStamp,如果我在该目录位置上创建外部表,那么当每天文件到来并驻留在该目录中时外部表是否会自行刷新? ?

hadoop hive hdfs bigdata hiveql
1个回答
1
投票

如果将文件添加到表目录或分区目录中,无关紧要,Hive中的外部或托管表,数据将可供查询访问,您无需执行任何其他步骤即可使数据可用,无需刷新。

Hive表/分区是元数据(DDL,位置,统计信息,访问权限等)以及位置中的数据文件。因此,数据存储在HDFS的表/分区位置。

只有为新分区创建了尚未创建的新目录,才需要执行ALTER TABLE ADD PARTITION LOCATION=<new location>MSCK REPAIR TABLE命令。 Amazon Elastic MapReduce(EMR)版本的Hive上的等效命令是:ALTER TABLE table_name RECOVER PARTITIONS

如果将文件添加到已创建的表/分区位置,则无需刷新。

CBO可以使用统计信息进行查询计算而无需读取数据文件,例如count(*)。它仅适用于简单查询,如count(*),max()。

如果您使用带有统计信息的CBO进行查询计算,则可能需要使用ANALYZE TABLE hive_table PARTITION(partitioned_col) COMPUTE STATISTICS进行刷新。有关更多详细信息,请参阅此答案:https://stackoverflow.com/a/39914232/2700344

如果您不需要统计信息并希望每次查询时都扫描表位置,请将其关闭:set hive.compute.query.using.stats=false;

© www.soinside.com 2019 - 2024. All rights reserved.