Hive 外部 table 能否检测到 HDFS 中的新 Parquet 文件
Can a Hive external table detect new Parquet files in HDFS
我正在使用与 Spark 捆绑在一起的 Hive。我的 Spark Streaming 作业在每个批处理作业中将 250 个 Parquet 文件写入 HDFS,格式为 /hdfs/nodes/part-r-$partition_num-$job_hash.gz.parquet。这意味着在完成 1 个工作后,我在 HDFS 中有 250 个文件,在 2 个工作后,我有 500 个文件。我的外部 Hive table,使用 Parquet 创建,指向 /hdfs/nodes 作为它的位置,但它没有'在我重新运行程序后更新以将数据包含在新文件中。
Hive 外部 table 是否包括 table 中的新文件,或者仅更新创建 table 时存在的现有文件?
另请参阅我关于 automatically updating tables using Hive 的相关问题。
您需要发出 REFRESH table_name
或 INVALIDATE METADATA [[db_name.]table_name]
命令,以便更新 Hive 元数据以包含这些新文件。
此解决方案假设您有 Impala 运行.
这有点 hack,但我最终确实让 Hive 检测使用新分区的新文件和 MSCK REPAIR TABLE tablename
,它在创建新分区后检测它们。
这并没有解决最初的问题,因为每次我在 Hive 中有我想要的新文件时都必须创建一个新分区,但它让我继续前进。
我正在使用与 Spark 捆绑在一起的 Hive。我的 Spark Streaming 作业在每个批处理作业中将 250 个 Parquet 文件写入 HDFS,格式为 /hdfs/nodes/part-r-$partition_num-$job_hash.gz.parquet。这意味着在完成 1 个工作后,我在 HDFS 中有 250 个文件,在 2 个工作后,我有 500 个文件。我的外部 Hive table,使用 Parquet 创建,指向 /hdfs/nodes 作为它的位置,但它没有'在我重新运行程序后更新以将数据包含在新文件中。
Hive 外部 table 是否包括 table 中的新文件,或者仅更新创建 table 时存在的现有文件?
另请参阅我关于 automatically updating tables using Hive 的相关问题。
您需要发出 REFRESH table_name
或 INVALIDATE METADATA [[db_name.]table_name]
命令,以便更新 Hive 元数据以包含这些新文件。
此解决方案假设您有 Impala 运行.
这有点 hack,但我最终确实让 Hive 检测使用新分区的新文件和 MSCK REPAIR TABLE tablename
,它在创建新分区后检测它们。
这并没有解决最初的问题,因为每次我在 Hive 中有我想要的新文件时都必须创建一个新分区,但它让我继续前进。