Hive外部表可以在HDFS中检测新的Parquet文件

时间:2015-08-28 17:00:11

标签: hadoop hive hdfs

我正在使用与Spark捆绑在一起的Hive。我的Spark Streaming作业以/hdfs/nodes/part-r-$partition_num-$job_hash.gz.parquet的形式将250个Parquet文件写入每个批处理作业的HDFS。这意味着在1个作业之后,我在HDFS中有250个文件,在2个之后,我有500个。我使用Parquet创建的外部Hive表指向/ hdfs / nodes它的位置,但它没有&#39 ; t在我重新运行程序后更新以包含新文件中的数据。

Hive外部表是否包含表中的新文件,或者仅对表制作时存在的现有文件进行更新?

另请参阅我关于automatically updating tables using Hive的相关问题。

2 个答案:

答案 0 :(得分:0)

您需要发出REFRESH table_nameINVALIDATE METADATA [[db_name.]table_name]命令,以便更新Hive元数据以包含这些新文件。

此解决方案假设您已运行Impala。

答案 1 :(得分:0)

这有点像黑客,但我最终让Hive使用新分区和MSCK REPAIR TABLE tablename检测新文件,后者在创建新分区后会检测到它们。

这不能解决原始问题,因为每次我在Hive中拥有我想要的新文件时都必须创建一个新分区,但这让我可以继续前进。