当前位置: 首页 > news >正文

Shell 获取Hive表的location 信息

用shell 获取建表语句:

hive -e "show create table ods_job.ods_job_tb"

得到结果:

CREATE TABLE `ods_job.ods_job_tb`(`id` bigint COMMENT 'id', `auto` int COMMENT 'job开启/关闭:0-关闭;1-开启', ....`timeout_kill` string COMMENT '是否超时kill')
COMMENT 'job表'
PARTITIONED BY ( `d` string COMMENT '日期分区字段')
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' 
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'
LOCATION'hdfs://ns/user/hive/warehouse/job.db/job_tb'
TBLPROPERTIES ('last_modified_by'='user', 'last_modified_time'='1656303639', 'metadata.partition.life'='-1', 'metadata.security.level'='Medium', 'orc.bloom.filter.columns'='id,visitor_id,auto,owner,group_id', 'spark.sql.partitionProvider'='catalog', 'transient_lastDdlTime'='1706259083')
Time taken: 1.343 seconds, Fetched: 57 row(s)

想要获取LOCATION 引号里面的值,并实现自动化

tardb=$1
tarTblname=$2
stmt=`hive-sql -v -e "use ${tardb}; show create table ${tarTblname};"`
loc=$( expr "${stmt}" : ".*LOCATION...'\([^']*\)" );echo $loc

loc变量就是想要的结果,这个shell稍微难写一点的就是里面的正则,还得过滤掉引号。
方式2, 这种会有点瑕疵,一旦表中有location 字段就有可能会产生bug,而上面就不会出现这种问题

#!/bin/bash# 替换为你的 Hive 表名
table_name="db.table"# 使用 Hive 命令获取表的详细信息,并通过 grep 筛选出包含 "Location" 的行
location_info=$(hive -e "describe formatted $table_name" | grep "Location")# 提取出具体的 location 值
location=$(echo $location_info | awk '{print $2}')echo "表 $table_name 的 location 信息为: $location"

推荐还是使用方法1
小记~

http://www.lryc.cn/news/389863.html

相关文章:

  • 从零搭建教育管理系统:Java + Vue.js 教学-02
  • VSCode + GDB + J-Link 单片机程序调试实践
  • grpc学习golang版( 五、多proto文件示例 )
  • LeetCode 106 从中序与后序遍历序列构造二叉树
  • Vue Router的深度解析
  • YOLO-V2
  • pmp考试的通过标准是什么?
  • 不懂PyQt5垂直布局?只需3分钟即可学会
  • 从零开始实现大语言模型(二):文本数据处理
  • 生物分子生物学实验过程的自动化与智能监控系统设计
  • linux的shell脚本编程详解
  • Redis 7.x 系列【11】数据类型之位图(Bitmap)
  • 如何评定旅游卡的品质与服务?
  • 适合学生暑假适用的护眼大路灯有哪些?五款好用护眼灯分享!
  • linux服务器 部署jenkins
  • 电商控价:系统监测的必要性与优势
  • 港股下半年能恢复上涨趋势吗?
  • 软件测试项目实战:银行贷款业务测试介绍-2
  • 如何将Hive表的分区字段插入PG表对应的时间戳字段?
  • Spring Boot与MyBatis的集成应用
  • 在昇腾服务器上使用llama-factory对baichuan2-13b模型进行lora微调
  • Kafka 管理TCP连接
  • electron教程(一)创建项目
  • 如何在Oracle、MySQL、PostgreSQL上终止会话或取消SQL查询
  • 3、FTL基本工作过程
  • 微信小程序的跳转页面
  • 深入理解 Java 中的线程间通信:`wait()`, `notify()`, `notifyAll()`
  • 23种设计模式【创建型模式】详细介绍之【单例模式】
  • 某汽车配件制造公司任职资格体系项目成功案例纪实
  • 【Linux】生物信息学常用基本命令