select *
from metastore.DBS as d
join metastore.TBLS as t
on t.DB_ID =
d.DB_ID
where t.TBL_NAME like '% ... put somthing here ... %'
order by d.NAME
,t.TBL_NAME
;
from functools import reduce
from pyspark import SparkContext, HiveContext
from pyspark.sql import DataFrame
sc = SparkContext()
sqlContext = HiveContext(sc)
dbnames = [row.databaseName for row in sqlContext.sql('SHOW DATABASES').collect()]
tnames = []
for dbname in dbnames:
tnames.append(sqlContext.sql('SHOW TABLES IN {} LIKE "%your_pattern%"'.format(dbname)))
tables = reduce(DataFrame.union, tnames)
tables.show()
7条答案
按热度按时间tvz2xvvm1#
也可以使用hdfs在所有数据库中查找表:
配置单元数据库的路径是:
因此,通过使用hdfs:
kzmpq1sx2#
您可以像使用sql一样搜索表。示例:我想搜索一个名称以“benchmark”开头的表,我不知道它的其余部分。
在配置单元cli中输入:
输出:
或者你可以尝试下面的命令,如果你使用的是直线
注意:它只适用于beeline(基于jdbc客户端)
有关beeline的更多信息:http://blog.cloudera.com/blog/2014/02/migrating-from-hive-cli-to-beeline-a-primer/
7ajki6be3#
在所有配置单元数据库中搜索名为包含infob的表
c3frrgcw4#
您应该查询元存储。
您可以在中找到连接属性
hive-site.xml
猛击在metastore中,可以使用类似以下的查询
mysql数据库
h43kikqp5#
配置单元将其所有元数据信息存储在metastore中。元存储架构可在以下位置找到:链接:https://issues.apache.org/jira/secure/attachment/12471108/hivemetastore.pdf
它有一些表,比如数据库的dbs,表和列的tbls。您可以使用适当的联接来查找表名或列名。
jjhzyzn06#
这是mantej singh答案的扩展:您可以使用pyspark在所有配置单元数据库(而不仅仅是一个)中查找表:
方法是遍历数据库,搜索具有指定名称的表。
apeeds0o7#
@希希的回答很优雅。然而,它导致了一个错误,在我们的集群上gc缺少内存。所以,还有一种不那么优雅的方法适合我。
让
foo
要搜索的表名。所以如果不记得表的确切名称而只记得子字符串
bar
在表名中,则命令为