我是新手。我想捕获所有数据库中的表和关联元数据列表(如列,行数等)。我在寻找什么是某种脚本,我可以把它交给它,任何人都可以运行它并通过将其写入文件来提供输出。
一种方法是编写一个mapreduce程序,该程序将连接到hive并提取此信息。
其他方法是以某种方式遍历表列表并获取此信息。我知道show tables
和describe table
命令,但不知道如何在脚本中使用这些命令以及如何运行此脚本。
我应该采取哪种方法?还有哪些其他选项/方法可用于执行此任务?谢谢你的帮助。 [对于RDBMS,我可以通过在系统目录表上编写SQL查询来实现此目的。]
答案 0 :(得分:0)
我会使用Spark,mapreduce或HPL/SQL来遍历表格列表(正如您所提到的),然后使用各种show语句获取所需的数据。我首先会研究HPL / SQL方法,以便它可以像任何Hive查询一样运行,如果第一种方法没有解决的话,我会尝试使用Spark。
-- loop on the values displayed in show tables
show tables;
-- then execute tblproperties and describe to get the metadata you are after
show tblproperties yourTableName;
describe yourTableName;
答案 1 :(得分:0)
使用hive Metorore API是一种可能的解决方案。请参阅HiveMetaStore APIs
您还可以查看WebHcat API Hcat for Hive
答案 2 :(得分:0)
我相信您需要配置hive Metastore以使用MYSQL或oracle,然后您可以在mysql或oracle数据库中查询SYS表并获得您想要的内容。默认配置单元使用Derby数据库
请参阅 https://dzone.com/articles/how-configure-mysql-metastore
希望这有帮助