HIVE元数据管理(待)

Posted 小基基o_O

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HIVE元数据管理(待)相关的知识,希望对你有一定的参考价值。

文章目录

1、概述

  • 元数据(Metadata):描述数据的数据(如:字段的 名称、注释、数据类型、大小…)
  • 元数据管理:注释管理、血缘分析、元数据可视化…
    作用:帮助开发人员快速理解业务和查找字段,降低开发的运维成本
元数据分类说明示例
技术元数据
业务元数据

2、HIVE注释管理

  • 在本文,HIVE元数据信息存到mysql
    在数仓建设中,建库建表时要添加注释(COMMENT)
    对于一些历史遗留的缺乏注释的表,要对其添加注释

  • 解决HIVE中文注释乱码:
    https://yellow520.blog.csdn.net/article/details/115960751

2.1、DDL

2.1.1、创建时添加注释

建库时添加注释

CREATE DATABASE b0 COMMENT '测试库';
USE b0;

修改库的注释(暂缺,有空再去官网看看)

建表时添加注释

CREATE TABLE t0(
    c0  INT     COMMENT '字段注释0',
    c1  STRING  COMMENT '字段注释1'
)COMMENT "表注释"
PARTITIONED BY (
    p0 STRING COMMENT "分区注释0",
    p1 INT COMMENT "分区注释1"
);

创建视图时添加注释

CREATE VIEW v0(
    c0  COMMENT '列注释0',
    c1  COMMENT '列注释1')
COMMENT '视图注释'
AS
SELECT c0,c1 FROM t0;

2.1.2、修改注释

修改表注释

ALTER TABLE t0 SET TBLPROPERTIES('comment'='修改表注释');

修改字段注释ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 数据类型 COMMENT '修改列注释';

ALTER TABLE t0 CHANGE COLUMN c1 c1 STRING COMMENT '修改列注释';

修改分区注释(暂缺)

2.2、在MySQL查看HIVE元数据

切换到存储HIVE元数据的库

USE metastore;

2.2.1、查看库

SELECT
    `DB_ID`,            -- 库ID
    `DESC`,             -- 库注释
    `DB_LOCATION_URI`,  -- 库在HDFS的位置
    `NAME`              -- 库名
FROM `DBS`;

2.2.2、查看表

查看表和表注释

SELECT
	b.`NAME`,               -- 库名
	t.`TBL_NAME`,           -- 表名
	t.`TBL_TYPE`,           -- 表类型
	c.`PARAM_VALUE`,        -- 表注释
	t.`VIEW_EXPANDED_TEXT`  -- 视图的SQL
FROM `DBS` b
LEFT JOIN `TBLS` t ON b.`DB_ID`=t.`DB_ID`
LEFT JOIN (
	SELECT `TBL_ID`,`PARAM_VALUE`
	FROM `TABLE_PARAMS`
	WHERE `PARAM_KEY`='comment'
)c ON t.`TBL_ID`=c.`TBL_ID`;

2.2.3、查看字段

字段注释:COLUMNS_V2COMMENT

SELECT
    t.`TBL_NAME`,     -- 表名
    c.`COLUMN_NAME`,  -- 字段名
    c.`COMMENT`,      -- 字段注释
    c.`TYPE_NAME`     -- 字段的数据类型
FROM `TBLS`t
LEFT JOIN `SDS`s ON s.`SD_ID`=t.`SD_ID`
LEFT JOIN `COLUMNS_V2`c ON s.`CD_ID`=c.`CD_ID`;

2.2.4、查看分区

SELECT
    t.`TBL_NAME`,      -- 表名
    p.`PKEY_NAME`,     -- 分区名
    p.`PKEY_COMMENT`,  -- 分区注释
    p.`PKEY_TYPE`      -- 分区的数据类型
FROM `PARTITION_KEYS`p
LEFT JOIN `TBLS`t ON t.`TBL_ID`=p.`TBL_ID`;

2.2.5、查看全部

SELECT
    b.`NAME`,            -- 库名
    b.`DESC`,            -- 库注释
    t.`TBL_NAME`,        -- 表名
    t.`TBL_TYPE`,        -- 表类型
    tc.`PARAM_VALUE`,    -- 表注释
    c.`COL_NAME`,        -- 字段名
    c.`COL_COMMENT`,     -- 字段注释
    c.`DATA_TYPE`,       -- 数据类型
    c.`COL_TYPE`         -- 字段类型(列or分区)
-- 库
FROM `DBS` b
-- 表
INNER JOIN `TBLS` t ON b.`DB_ID`=t.`DB_ID`
-- 表注释
LEFT JOIN (
    SELECT `TBL_ID`,`PARAM_VALUE`
    FROM `TABLE_PARAMS`
    WHERE `PARAM_KEY`='comment'
    )tc ON t.`TBL_ID`=tc.`TBL_ID`
-- 字段注释
LEFT JOIN(
    (
        -- 分区注释
        SELECT
            `TBL_ID`,                         -- 表ID
            `PKEY_NAME`      `COL_NAME`,      -- 分区名
            `PKEY_COMMENT`   `COL_COMMENT`,   -- 分区注释
            `PKEY_TYPE`      `DATA_TYPE`,     -- 数据类型
            'partition'         `COL_TYPE`    -- 类型
        FROM `PARTITION_KEYS`
        )UNION ALL(
        -- 列注释
        SELECT
            t.`TBL_ID`       `TBL_ID`,        -- 表ID
            c.`COLUMN_NAME`  `COL_NAME`,      -- 字段名
            c.`COMMENT`      `COL_COMMENT`,   -- 字段注释
            c.`TYPE_NAME`    `DATA_TYPE`,     -- 字段的数据类型
            'column'      `COL_TYPE`          -- 类型
        FROM (
            SELECT b.`TBL_ID`,s.`CD_ID` FROM `TBLS`b
            INNER JOIN `SDS`s ON s.`SD_ID`=b.`SD_ID`
        )t
        LEFT JOIN `COLUMNS_V2`c ON t.`CD_ID`=c.`CD_ID`
    )
)c ON t.`TBL_ID`=c.`TBL_ID`;

3、血缘管理工具:Atlas(待完成)

3.1、简介

主要功能说明
元数据分类
元数据检索
血缘依赖表到表的血缘依赖、字段到字段的血缘依赖
本文环境说明
节点hadoop102hadoop103hadoop104
Solr版本7.7.3
Atlas版本2.1.0

安装Solr

在每台节点创建名为Solr的系统用户

useradd solr

下载、解压、修改户主

wget
tar -zxvf solr-7.7.3.tgz -C $B_HOME/
cd $B_HOME
mv solr-7.7.3 solr
chown -R solr:solr solr

配置文件

vim $B_HOME/solr/bin/solr.in.sh
ZK_HOST="hadoop102:2181,hadoop103:2181,hadoop104:2181"

分发

rsync.py $B_HOME/solr

在每个节点,使用solr用户来启动Solr(前提是ZooKeeper在运行)

sudo -i -u solr /opt/module/solr/bin/solr start

Web端口为8983,任意一个节点都可,http://hadoop102:8983

安装Atlas

下载、解压

tar -zxvf apache-atlas-2.1.0-server.tar.gz -C $B_HOME
cd $B_HOME
mv apache-atlas-2.1.0 atlas

配置Atlas存储到外部HBase

vim $B_HOME/atlas/conf/atlas-application.properties
atlas.graph.storage.hostname=hadoop102:2181,hadoop103:2181,hadoop104:2181

HBase配置

vim $B_HOME/atlas/conf/atlas-env.sh
export HBASE_CONF_DIR=$HBASE_HOME/conf

Atlas集成Solr

vim /opt/module/atlas/conf/atlas-application.properties
atlas.graph.index.search.backend=solr
atlas.graph.index.search.solr.mode=cloud
atlas.graph.index.search.solr.zookeeper-url=hadoop102:2181,hadoop103:2181,hadoop104:2181

Atlas集成Hive

安装Hive Hook

tar -zxvf apache-atlas-2.1.0-hive-hook.tar.gz

将Hive Hook依赖复制到Atlas安装路径

cp -r apache-atlas-hive-hook-2.1.0/* /opt/module/atlas/

Hive Hook配置

mv hive-env.sh.template hive-env.sh
vim hive-env.sh
export HIVE_AUX_JARS_PATH=/opt/module/atlas/hook/hive

修改Hive配置文件

vim $HIVE_HOME/conf/hive-site.xml
<property>
    <name>hive.exec.post.hooks</name>
    <value>org.apache.atlas.hive.hook.HiveHook</value>
</property>

以上是关于HIVE元数据管理(待)的主要内容,如果未能解决你的问题,请参考以下文章

Hive元数据信息获取

数据仓库环境准备Hive常见问题及解决方式

数据仓库环境准备Hive常见问题及解决方式

HIVE学习(待更新)

让hive的表注释和字段注释支持中文

hive表添加字段导致历史分区查询报错