在Hive本身中公开Hive元数据

时间:2018-04-12 18:38:06

标签: hive metadata hive-metastore

我有点期待它在那里,但显然不是。 Hive不会在其环境中公开自己的元数据。例如,像Oracle一样,它允许您对您创建的表使用“user_tables”。

我理解并感谢hive元数据存储在RDBMS的外部,但作为构建不同类型查询的用户,访问我正在使用的环境的上下文元数据非常有用。

由于HCatalog将元数据暴露给任何愿意的人,为什么不能使用hive引擎来获取相同的内容并让它可见!

我知道实现这一目标可能带来的一些挑战,但我要问的是,“是否有任何工作流可以实现与此类似的工作?”

作为用户,我确实需要它。

2 个答案:

答案 0 :(得分:1)

Hive Version 3.0.0 在 hive 中引入了 information_schema 数据库本身。我们可以在哪里探索基本的 Hive 元数据。此外还有另一个名为 sys 的数据库,它包含所有与元数据相关的信息。

您可以参考以下链接。

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

答案 1 :(得分:0)

你写道:"我理解并理解hive元数据存储在RDBMS外部的事实"。然后尝试JDBC存储处理程序:https://github.com/qubole/Hive-JDBC-Storage-Handler

您可以像在此示例中一样在Hive中创建表,并像任何其他本机Hive表一样查询它:

DROP TABLE HiveTable;
CREATE EXTERNAL TABLE HiveTable(
  id INT,
  id_double DOUBLE,
  names STRING,
  test INT
)
STORED BY 'org.apache.hadoop.hive.jdbc.storagehandler.JdbcStorageHandler'
TBLPROPERTIES (
  "mapred.jdbc.driver.class"="com.mysql.jdbc.Driver",
  "mapred.jdbc.url"="jdbc:mysql://localhost:3306/rstore",
  "mapred.jdbc.username"="root",
  "mapred.jdbc.input.table.name"="JDBCTable",
  "mapred.jdbc.output.table.name"="JDBCTable",
  "mapred.jdbc.password"="",
  "mapred.jdbc.hive.lazy.split"= "false"
);