是否有Hive查询仅列出特定数据库中可用的视图。
在MySql中我认为的查询如下:
SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA LIKE 'database_name';
我想要类似HiveQL的东西。
答案 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”并相应地调整sed
和cut
语句来仅查找表。