【问题标题】:Impala - Find what tables have a specific columnImpala - 查找哪些表具有特定列
【发布时间】:2017-11-14 19:03:53
【问题描述】:

在 Impala 中,有没有办法检查数据库中的哪些表包含特定的列名?

类似:

select tablename, columnname
from dbc.columns
where databasename = 'mydatabasename'
and columnname like '%findthis%'
order by tablename

上述查询在 teradata 环境中工作,但在 Impala 中引发错误。

谢谢,

【问题讨论】:

  • 在 Impala 中没有 dbc.columns 这样的东西。

标签: sql hadoop cloudera impala


【解决方案1】:

Impala 与 Hive 共享元存储。与传统的 RDBMS 不同,Hive 元数据存储在单独的数据库中。在大多数情况下,它位于 MySQL 或 Postgres 中。如果您有权访问 Metastore 数据库,则可以对表 TBLS 运行 SELECT 以获取有关表的详细信息,并使用 COLUMNS_V2 获取有关列的详细信息。

如果您无权访问元存储,唯一的选择是描述每个表以获取列名。如果你有很多数据库和表,你可以编写一个 shell 脚本来使用“show tables”获取表的列表,然后循环使用“desc tablename”来描述它们。

【讨论】:

  • 我可以访问 hive,但 tbls 和 columns_v2 出现错误
  • @acvbasql - 您在 Hive/Impala 中看不到这些表。您需要找到元存储数据库并在那里运行查询。 Metastore 数据库详细信息可以在 hive-site.conf 中找到。它通常是一个 RDBMS。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 2018-08-05
  • 2019-02-16
  • 2019-04-27
相关资源
最近更新 更多