如果您将文件添加到表目录或分区目录中,无论是 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
。有关更多详细信息,请参阅此答案:/sf/answers/2793996271/
如果您不需要统计信息并希望每次查询时都扫描表位置,请将其关闭:set hive.compute.query.using.stats=false;