如何获取Hive库表字段分区信息

2023-11-17

如何获取Hive库表字段分区信息

  使用Hive关联的Mysql读取Hive的库表字段分区信息,也可以使用Hive的sys数据库查询相关的信息,但是会比较慢。所以直接使用Mysql去读,Hive在Mysql保存的信息如下图所示:
在这里插入图片描述

获取Hive的所有数据库信息

  如果注释字段中文乱码,则需要修改字符集(正常情况都需要修改)。

SELECT
	`NAME` NAME,
	ANY_VALUE ( `DESC` ) COMMENT,
	ANY_VALUE ( `DB_LOCATION_URI` ) path 
FROM
	`DBS` 
GROUP BY
	`NAME`

在这里插入图片描述

根据数据库名获取数据表信息

  path字段对应着Hive表在Hdfs的路径,在做数据同步的时候很重要(比如使用dataX进行数据同步,当然手写JSON也是很累的,但是还好有datax-web开源项目),type字段可以看出表的储存格式(目前已知Hive可以直接加载Hdfs目录中的text格式parquet格式文件)。

SELECT
	tb.TBL_NAME NAME,
	tp.PARAM_VALUE COMMENT,
	sds.INPUT_FORMAT type,
	sds.LOCATION path 
FROM
	DBS db
	LEFT JOIN TBLS tb ON tb.DB_ID = db.DB_ID
	LEFT JOIN TABLE_PARAMS tp ON tp.TBL_ID = tb.TBL_ID 
	AND tp.PARAM_KEY = 'comment'
	LEFT JOIN SDS sds ON sds.SD_ID = tb.SD_ID 
WHERE
	db.`NAME` = 'test'
ORDER BY
	tb.TBL_NAME

在这里插入图片描述

根据数据库名、数据表名获取表字段信息

  此处查询结果只会展示表的字段信息(分区字段不会在该查询语句的结果中显示)。

SELECT
	col.COLUMN_NAME NAME,
	col.TYPE_NAME type,
	col.`COMMENT` COMMENT,
	col.INTEGER_IDX position 
FROM
	DBS db
	LEFT JOIN TBLS tb ON tb.DB_ID = db.DB_ID
	LEFT JOIN SDS sds ON sds.SD_ID = tb.SD_ID
	LEFT JOIN COLUMNS_V2 col ON sds.CD_ID = col.CD_ID 
WHERE
	db.NAME = 'test' 
	AND tb.TBL_NAME = 'person'
ORDER BY
	col.INTEGER_IDX

在这里插入图片描述

根据数据库名、数据表名获取表分区信息

  至于分区字段为什么单独拿出来不合到表字段里,是因为每个分区对应着一个Hdfs目录。分区有目录,字段没有啊怎么能放到一起。(在使用datax同步分区数据时会将分区数据同步到分区表指定的分区目录中)。

查看分区表分区字段信息

  创建一个分区表用年、月、日三级目录进行分区:

create table if not exists person_partition(
    name string comment '姓名',
    age  int comment '年龄'
) comment '测试表'
partitioned by (
    year string comment '年',
    month string comment '月',
    day string comment '日'
)
stored as parquet;

  分区表字段信息如下所示:
在这里插入图片描述
  分区表分区字段信息如下所示:
在这里插入图片描述

SELECT
	pk.PKEY_NAME NAME,
	pk.PKEY_TYPE type,
	pk.PKEY_COMMENT COMMENT,
	pk.INTEGER_IDX position 
FROM
	DBS db
	LEFT JOIN TBLS tb ON tb.DB_ID = db.DB_ID
	LEFT JOIN PARTITION_KEYS pk ON pk.TBL_ID = tb.TBL_ID 
WHERE
	db.`NAME` = 'test' 
	AND tb.TBL_NAME = 'person_partition' 
ORDER BY
	pk.INTEGER_IDX

查看分区表的分区信息

  当前表中还没有分区,先来加几个分区:

  • 添加分区【同时会在Hdfs中创建目录】:alter table [table] add partition(col,..);
  • 删除分区【同时会在Hdfs中删除目录】:alter table [table] drop partition(col,..);
alter table person_partition add if not exists partition(year=2015,month=12,day=26);
alter table person_partition add if not exists partition(year=2016,month=12,day=26);
alter table person_partition add if not exists partition(year=2017,month=12,day=26);
alter table person_partition add if not exists partition(year=2018,month=12,day=26);
alter table person_partition add if not exists partition(year=2019,month=12,day=26);
alter table person_partition add if not exists partition(year=2020,month=12,day=26);

在这里插入图片描述
  接下来查询下分区表的分区信息,看看每个分区对应的Hdfs路径(使用datax数据同步时将会使用到):

SELECT
	db.`NAME` dbName,
	tb.TBL_NAME tbName,
	part.PART_NAME partName,
	sds.LOCATION path 
FROM
	`PARTITIONS` part
	LEFT JOIN TBLS tb ON tb.TBL_ID = part.TBL_ID
	LEFT JOIN DBS db ON db.DB_ID = tb.DB_ID
	LEFT JOIN SDS sds ON sds.SD_ID = part.SD_ID 
WHERE
	db.`NAME` = 'test' 
	AND tb.TBL_NAME = 'person_partition'

在这里插入图片描述
  去hdfs中验证下是不是有这个几个目录:
在这里插入图片描述


  如果还需要hive的其它信息,请认真翻阅hive关联的mysql数据库,查看hive库保存的相关表信息(o(╥﹏╥)o)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取Hive库表字段分区信息 的相关文章

随机推荐

  • tensorflow人脸识别_「深度学习」用TensorFlow实现人脸识别(附源码,快速get技能)...

    本文将会带你使用python码一个卷积神经网络模型 实现人脸识别 操作难度比较低 动手跟着做吧 让你的电脑认出你那帅气的脸 由于代码篇幅较长 而且最重要的缩进都没了 建议直接打开源码或者点击分享 gt 复制链接 然后到浏览器里观看 执行顺序
  • qt之CheckBox选中与未选中的使用

    引言 给大家推荐一个超好用的软件 此软件也是优秀博主开发 主要是针对在我们开发过程中会不断的收集资料 而经过时间的洗礼 这些资料慢慢变得庞大起来 但是就出现了个问题 你2年前收集的资料 你在某天打开发现只有一个文件名 根本不知道具体里面干了
  • Ubuntu 16.04切换Intel集显为Nvidia独显教程

    在安装完Ubuntu后 会出现屏幕显示不正常 这时候可能是没有用到NVIDIA的独显 而是用的intel的集成显卡 一 检查 由于之前集成显卡的时候没有截图 大致下图上图形为llvmpipe LLVM 6 0 256 bits 的信息 没有
  • 17个面向Web 开发人员的杀手级网站,值得你收藏

    保持网站方便可能是最终的生产力技巧 以下是我用来让我的生活更轻松的一些最好的网站 让我们一起来看看它们 1 图片API 地址 https source unsplash com 世界上最强大的照片引擎 Unsplash API 是一种现代
  • 解题思路-LeetCode第55题:跳跃游戏

    解题思路 LeetCode第55题 跳跃游戏 题目描述 给定一个非负整数数组 你最初位于数组的第一个位置 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个位置 示例 1 输入 2 3 1 1 4 输出 true
  • 数值类型转换Number()、parseInt()、parseFloat()

    在开发中踩了一个坑 在进行两个字符串类型的值比较时 忘记转换成数值类型导致错误 所以借此正好整理下数值类型转换的几种方式的比较与区分 Number parseInt parseFloat 的比较区分 Number 1 如果传入的是数值类型
  • 毕业五年,从月薪3K到年薪50W+,需要掌握哪些核心技能?(c/c++研发岗)

    作为一个程序员 随着工作年限的不断增长 感觉自己的技术水平与自己的工作年限严重不符 想跳槽出去换个新环境吧 又感觉自己的能力达不到心仪公司的标准 即使投了简历也没人来通知自己面试 就这样在原来的公司一天天的混日子 时间久了 感觉自己废了 就
  • 微信小程序怎么改变默认的打开页面?

    刚开始接触微信小程序 本来想要打开一个新页面而不是用原来的 这个页面 每次编译之后怎么才能让默认打开的页面不是这个页面而是我指定的页面呢 就去找到app json 把想指定的页面放到第一个 那么默认打开的首页就是你指定的页面了 这是来源于官
  • 两行Python代码调整视频的亮度

    老猿Python博文目录 一 引言 最近看到好几篇类似 n行Python代码 的博文 看起来还挺不错 简洁 实用 传播了知识 带来了阅读量 撩动了老猿的心 决定跟风一把 推一个 n行Python代码系列 文章 对于视频中的画面 有时出于特定
  • 【VPR】 Command-line - vpr的命令行选项(一)

    目录 一 基本用法 二 命令行详解 2 1 阶段选项 Stage Options 2 2 图形选项 Graphics Options 2 3 常规选项 General Options 2 4 文件名选项 Filename Options 2
  • RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is F..

    今天在HPC上跑的方法疯狂报错 RuntimeError Attempting to deserialize object on a CUDA device but torch cuda is available is False If y
  • System.IO.IOException: Sharing violation on pat

    System IO IOException Sharing violation on path E wang downloadmanage Assets download IEM2 apk at System IO FileStream c
  • 浅谈机器学习-回归与分类的区别

    前言 机器学习的主要任务便是聚焦于两个问题 分类和回归 本文将浅谈下两者的区别 区别 回归会给出一个具体的结果 例如房价的数据 根据位置 周边 配套等等这些维度 给出一个房价的预测 分类相信大家都不会陌生 生活中会见到很多的应用 比如垃圾邮
  • Spring Boot 2 全局异常处理

    1 创建 MyRestControllerAdvice 类 并添加 RestControllerAdvice import com tm common dto Rjson import com tm common exception Bus
  • Landsat9卫星简介

    1 landsat 9 先来介绍下2021年9月27日发射的landsat 9 目前已经采集了第一批影像 10月31日 1 携带的传感器 二代陆地成像仪Operational Land Imager 2 OLI 2 二代热红外传感器 TIR
  • C++11中thread_local的使用

    C 11中的thread local是C 存储期的一种 属于线程存储期 存储期定义C 程序中变量 函数的范围 可见性 和生命周期 C 程序中可用的存储期包括auto register static extern mutable和thread
  • 区块链的跨链技术介绍完整版

    如果说共识机制是区块链的灵魂核心 那么对于区块链特别是联盟链及私链来看 跨链技术就是实现价值网络的关键 它是把联盟链从分散单独的孤岛中拯救出来的良药 是区块链向外拓展和连接的桥梁 自比特币七年前诞生以来 数以百计的竞争币被开发出来 有着各种
  • 深入了解Aviator表达式引擎:高性能的轻量级计算引擎

    在软件开发过程中 我们经常需要对数学和逻辑表达式进行求值和计算 传统的方式可能会导致性能瓶颈和复杂的代码逻辑 在这篇博客中 我们将介绍Aviator表达式引擎 一个轻量级且高性能的计算引擎 用于解析和执行数学和逻辑表达式 什么是Aviato
  • 递归算法深入浅出三:递归求Fibonacci斐波那契数列

    递归算法概述及常见算法列表 传送门 http blog csdn net nthack5730 article details 65537530 斐波那契数列 斐波纳契数列 又称黄金分割数列 指的是这样一个数列 1 1 2 3 5 8 13
  • 如何获取Hive库表字段分区信息

    如何获取Hive库表字段分区信息 使用Hive关联的Mysql读取Hive的库表字段分区信息 也可以使用Hive的sys数据库查询相关的信息 但是会比较慢 所以直接使用Mysql去读 Hive在Mysql保存的信息如下图所示 获取Hive的