在 Impala 中自动执行“验证元数据”

Posted

技术标签:

【中文标题】在 Impala 中自动执行“验证元数据”【英文标题】:Auto execution of "validate metadata" in Impala 【发布时间】:2015-04-14 20:53:37 【问题描述】:

我已将 Tableau 连接到 Cloudera Impala 数据。我从 Metastore 读取的表不断更新,因此,当我想要更新可视化项(按 F5)时,我必须转到 Cloudera 中的 Impala 并在刷新可视化项之前执行“INVALIDATE METADATA”。我知道这可以使用与 Hive Server 2 的连接来完成,但是执行查询需要很长时间。我的问题是在 Impala Cloudera 中自动执行“验证元数据”和“刷新”查询吗?

谢谢,

Amr

【问题讨论】:

【参考方案1】:

不幸的是,Impala 还没有提供自动更新元数据的机制。尽管我们尚未将此类功能提交给特定版本,但我们正在为此努力。

与此同时,您可能可以采取一些措施来简化此操作。首先,表格是如何更新的?是否有新的数据文件?如果是这样,您可以运行更快的 REFRESH。此外,请确保仅对特定表进行无效/刷新,例如REFRESH my_table。有关详细信息,请参阅 [INVALIDATE METADATA][1] 和 REFRESH 的文档。

后台是否有一些 ETL 过程?一些用户修改他们的工作流程以在更新表后向 impala 发出 REFRESH 命令,例如 在脚本中添加impala-shell -i <impalad-host> -q "REFRESH my_table"

【讨论】:

Flume 正在摄取数据,Hive 正在创建表,然后 Tableau 会创建一个 viz。所以。我想要即。使用 Impala 进行更新,因为它比 Hive 快得多。 你能在 Impala 中创建表吗?这样您就不需要显式更新元数据了。 我确实在 impala 中尝试过,我使用过: CREATE EXTERNAL TABLE ImpData( DatetimeL TIMESTAMP, V1 FLOAT, V2 FLOAT, V3 FLOAT ) 行格式分隔字段,以',' LOCATION '/user/data/ 结尾'; 我认为在 Impala 中任何更新/创建表都需要执行 Invalidate/Refresh 如果您发出 CREATE TABLE 然后在同一节点上执行后续查询,则不需要,因为 impalad 已经知道元数据更改。您观察到的行为是什么?

以上是关于在 Impala 中自动执行“验证元数据”的主要内容,如果未能解决你的问题,请参考以下文章

Cloudera Impala INVALIDATE METADATA 表列表

自动增量 UDF 在 hive 中工作,但在 Impala 中返回 null

0757-6.3.3-如何配置impala自动同步HMS元数据

Impala 可以从表中执行 COUNT(*) 但不能执行 SELECT *

Impala 有自己的执行引擎还是在 Hadoop 生态系统中的 MapR 上工作?

写入 Impala 时自动创建 Impala 表的数据框