我每天都要把数据输入hdfs。从数据到hdfs,我生成按日期和另一列划分的配置单元表。一天有130克的数据。生成数据后,我运行 msck repair . 现在每个msck任务超过2小时。在我看来,msck将扫描整个表数据(我们有大约200天的数据),然后更新元数据。我的问题是:有没有办法让msck只扫描最后一天的数据,然后更新元数据来加速整个过程?顺便说一下,没有小文件的问题,我已经合并小文件之前的msck。
msck repair
oxalkeyp1#
使用此配置创建外部表或修复/恢复分区时:
set hive.stats.autogather=true;
配置单元扫描表位置中的每个文件以获取统计信息,这可能需要太多时间。解决方案是在创建/更改表/恢复分区之前关闭它
set hive.stats.autogather=false;
请参阅这些相关票据:hive-18743、hive-19489、hive-17478如果需要统计信息,则可以仅在必要时使用收集新分区的统计信息
ANALYZE TABLE [db_name.]tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)] COMPUTE STATISTICS
请参见此处的详细信息:分析表另外,如果您知道应该添加哪些分区,请使用ALTERTABLEADDPARTITION—您可以在一个命令中添加多个分区。
1条答案
按热度按时间oxalkeyp1#
使用此配置创建外部表或修复/恢复分区时:
配置单元扫描表位置中的每个文件以获取统计信息,这可能需要太多时间。
解决方案是在创建/更改表/恢复分区之前关闭它
请参阅这些相关票据:hive-18743、hive-19489、hive-17478
如果需要统计信息,则可以仅在必要时使用收集新分区的统计信息
请参见此处的详细信息:分析表
另外,如果您知道应该添加哪些分区,请使用ALTERTABLEADDPARTITION—您可以在一个命令中添加多个分区。