在Hive中,我们如何在所有数据库中按名称搜索表?

我是Teradata用户。系统表(存在于Teradata中)是否与HIVE中存在的dbc.tables,dbc.columns等任何对等?

最佳答案

您应该查询元存储。

您可以在hive-site.xml中找到连接属性

bash

<$HIVE_HOME/conf/hive-site.xml grep -A1 jdo
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://127.0.0.1/metastore?createDatabaseIfNotExist=true</value>
--
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
--
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
--
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>cloudera</value>

在Metastore中,您可以使用类似于以下内容的查询

mysql
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
;

关于hadoop - 在Hive中的所有数据库中搜索表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44151670/

10-16 21:29