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



我在 HDFS 中有一个目录,每天一个处理过的文件都放在该目录中,文件名中带有 DateTimeStamp,如果我在该目录位置之上创建外部表,当每天文件出现并驻留在该目录中时,外部表是否会自行刷新?

如果将文件添加到表目录或分区目录中,则无关紧要,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;

相关内容

  • 没有找到相关文章

最新更新