HiveQL:查询仅列出视图

时间:2014-03-10 09:08:40

标签: hive hiveql

是否有Hive查询仅列出特定数据库中可用的视图。

在MySql中我认为的查询如下:

SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA LIKE 'database_name';

我想要类似HiveQL的东西。

3 个答案:

答案 0 :(得分:1)

目前Hive中没有INFORMATION_SCHEMA实施。

您可以通过以下链接查看Open JIRA:

https://issues.apache.org/jira/browse/HIVE-1010

但是,如果使用Derby MySQL服务器配置Hive Metastore,则可以访问所需的信息。

可以在以下位置找到配置Hive Metastore的不同方法:

http://www.thecloudavenue.com/2013/11/differentWaysOfConfiguringHiveMetastore.html

以下是Metastore的详细E / R图:

https://issues.apache.org/jira/secure/attachment/12471108/HiveMetaStore.pdf

配置此Metastore后,您可以通过以下查询获取所需的信息:

SELECT * from TBLS where TBLS_TYPE = "VIEW"

答案 1 :(得分:0)

SHOW VIEWS [in/from <dbName>] [<pattern>]

(很像SHOW TABLE命令)可以通过https://issues.apache.org/jira/browse/HIVE-14558补丁进行跟踪,并且它有可能落在Hive 2.0中。

答案 2 :(得分:0)

如果你像我一样被旧版本的Hive卡住而无法使用SHOW VIEWS,请使用以下脚本

export db=$1
tables=`hive -e "use $db; show tables;"`
show_table_command=''
for table in $tables; do
  show_table_command="$show_table_command SHOW CREATE TABLE ${db}.${table};"
done
hive -e "$show_table_command" > show_table
sed_command="s/$db\.//g"
cat show_table | grep "CREATE VIEW" | cut -d" " -f3 | sed 's/`//g' | sed ${sed_command} > all_views

sh find_views.sh dbname运行此代码。现在,all_views表包含了视图列表。

您也可以使用相同的技术通过将“CREATE VIEW”替换为“CREATE TABLE”或“CREATE EXTERNAL TABLE”并相应地调整sedcut语句来仅查找表。