hadoop—当文件被添加到指向目录时,外部配置单元表会自动刷新吗

h4cxqtbf  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(353)

我在hdfs中有一个目录,每天都有一个处理过的文件放在这个目录中,文件名中有datetimestamp,如果我在这个目录位置上创建外部表,那么当每天都有文件出现并驻留在这个目录中时,外部表会自动刷新吗??

jucafojl

jucafojl1#

如果将文件添加到配置单元中的表目录或分区目录(无所谓)、外部表或托管表中,则可以访问数据进行查询,无需执行任何其他步骤即可使数据可用,无需刷新。
配置单元表/分区是元数据(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 with statistics进行查询计算,则可能需要使用 ANALYZE TABLE hive_table PARTITION(partitioned_col) COMPUTE STATISTICS . 有关更多详细信息,请参见此答案:https://stackoverflow.com/a/39914232/2700344
如果不需要统计信息,并且希望每次查询时都扫描表位置,请将其关闭: set hive.compute.query.using.stats=false;

相关问题