gpt4 book ai didi

impala - 列出需要失效/刷新的 Impala 表

转载 作者:行者123 更新时间:2023-12-01 08:50:16 30 4
gpt4 key购买 nike

我如何以编程方式找到所有需要 INVALIDATE METADATA 语句的 Impala 表(因为它们是在 Hive 中创建的,但 Impala 尚不知道)或 REFRESH(因为列已添加、已添加数据文件等)?

最佳答案

无效元数据:

作为解决方法,创建一个 shell 脚本来执行以下步骤。

  1. 使用 beeline,连接到特定数据库并运行 show tables 语句并将输出数据保存到文件。
  2. 使用 impala-shell,连接到相同的特定数据库并运行 show tables 语句并将输出数据保存到另一个文件。
  3. 现在比较两个文件以删除重复项并从第一个文件中获取唯一表列表,该文件是仅在 hive 中但不在 impala 中的表列表。

注意:

一个。您可以遍历所有数据库并将输出保存到一个文件,而不是一次分 1 步和 2 步分别针对一个特定的数据库。在循环本身内部,您可以将输出文件重定向并附加到另一个最终输出文件,其中包含某种格式的数据,如 database.table 或 database_table,以将所有数据库中的所有表放入一个文件中。最后,执行步骤 3。

删除重复项后第二个输出文件中的唯一表将是在 hive 中删除的表,需要在 impala 中运行无效元数据以将它们从 impala 列表中删除。

hive 可以识别 impala 中表的重命名,但反之亦然,并且应该为旧表名和新表名运行无效元数据以分别在 impala 中删除和添加。这适用于大多数操作,而不仅仅是表的重命名。

刷新:

考虑一个包含 2 列和 1 行数据的文本格式表格。现在假设,第三列被添加到直线中的那个表中。

select * from table; ---gives 3 columns in beeline and 2 columns in impala since refresh is not run on impala for this table.

在这种情况下,如果我们在运行刷新之前在 impala 中运行计算统计,那么从直线中新添加的列也将从 hive 中的表架构中删除。

select * from table; ---gives 2 columns in beeline and 2 columns in impala since compute stats from impala deleted the extra column metadata of table although data resides in hdfs for that column. This might cause parsing issues in impala if the column is added somewhere in the middle or front instead of ending.

因此建议在添加新列或在直线中对现有表进行任何修改后立即在 impala 中运行 REFRESH 表名,以免丢失表架构,如上述场景中所述。

refresh table; ---Right after modification in hive run refresh in impala.

select * from table; ---gives 3 columns in beeline and 3 columns in impala since refresh is run before compute stats in impala.

关于impala - 列出需要失效/刷新的 Impala 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52053556/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com