Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Hive一次更新多个分区数据方案

Hive一次更新多个分区数据方案

作者头像
awwewwbbb
发布于 2022-09-16 04:29:34
发布于 2022-09-16 04:29:34
97700
代码可运行
举报
运行总次数:0
代码可运行

场景

订单数据之类的业务表,因为有状态要更新,比如订单状态,物流状态之类的,需要同步很久之前的数据到Hive. 如何同步时在Hive中进行操作一次更新多个分区内的数据?

Hive 操作

  1. 设置Hive动态分区
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
  1. 创建分区表:

源表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `ods_binlog_person`(
  `binlog_id` bigint,
  `binglog_es` bigint,
  `binlog_ts` bigint,
  `binlog_type` string,
  `id` bigint,
  `name` string,
  `score` int,
  `created_at` string,
  `updated` string)
PARTITIONED BY (`dt` string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

加载数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load data inpath '/camus/exec/binlog/person/pt_hour=2022072400' into table ods_binlog_person  partition (dt='2022072400')

目标表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE  IF NOT EXISTS  temp_partition_table(
   id string comment "字段id",
   name string comment "字段注释",
  `score` int,
  `created_at` string,
  `updated` string
)  COMMENT "分区表"
PARTITIONED BY(`dt` string)
STORED AS ORC
TBLPROPERTIES("orc.compress"="SNAPPY");
  1. 插入分区数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
insert overwrite table temp_partition_table partition(dt) 
select 
  id, 
  name,
  score,
  created_at,
  updated,
  from_unixtime(unix_timestamp(created_at,'yyyy-MM-dd HH:mm:ss'), 'yyyyMMdd')

from ods_binlog_person where dt = 2022072400;
  1. 查看分区
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show partitions temp_partition_table;


OK
dt=20220717
dt=20220720
Time taken: 0.175 seconds, Fetched: 2 row(s)
  1. 查看表信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show create table temp_partition_table;

或者

desc temp_partition_table
  1. 加载到目标表后, 可以删除源表中的分区数据,避免数据冗余
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter table ods_binlog_person  drop partition(dt=2022072400)

结论

通过Hive动态分区, 我们就实现基于源表的业务时间生成目标表的分区, 并且将数据加载到对应分区中. 然后删除源表对应分区的数据,避免数据冗余节省空间.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
助力工业物联网,工业大数据之ODS层构建:申明分区代码及测试【十】
step4:Oracle字段类型与Hive/SparkSQL字段类型不一致怎么办?
Maynor
2023/05/07
4190
助力工业物联网,工业大数据之ODS层构建:申明分区代码及测试【十】
Hive个人笔记总结
①保证环境变量中有JAVA_HOME ②基于HADOOP工作,保证环境变量中有HADOOP_HOME ③在环境变量中配置HIVE_HOME,默认hive在启动时,会读取HIVE_HOME/conf中的配置文件
Java架构师必看
2021/05/14
2.7K0
(四)Hive分区、分桶
CREATE TABLE IF NOT EXISTS salgrade2 ( GRADE int, LOSAL int, HISAL int ) partitioned by (day string) row format delimited fields terminated by '\t' location '/data/inner/ODS/01/salgrade2';
wolf
2020/09/18
1.2K0
工作常用之Hive 调优【三】 Explain 查看执行计划及建表优化
create table bigtable(id bigint, t bigint, uid string, keyword string,
Maynor
2022/10/04
1.7K0
工作常用之Hive 调优【三】 Explain 查看执行计划及建表优化
hive是一个数据仓库基础架构_数据仓库ods层和dw层的区别
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
5440
hive性能调优 读书笔记 - 调优多样性(改写sql、数据块大小、格式、分区、分桶)
减少产生 中间数据 --> 减少 磁盘/网络 IO 时间,减少 job 数量,就是减少 MapReduce 作业(减少数据经历的磁盘读写和网络通讯)
Michael阿明
2023/03/11
6300
hive性能调优 读书笔记 - 调优多样性(改写sql、数据块大小、格式、分区、分桶)
hive动态分区相关
1.动态分区操作 –动态分区插数 set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; set hive.exec.max.dynamic.partitions=100000; set hive.exec.max.dynamic.partitions.pernode=100000;
chimchim
2022/11/13
6320
hive动态分区相关
Hive学习-数据定义语句
1)存储位置:Hive的数据存储在Hadoop上,而像MySQL这样的关系型数据库将数据存储在设备或本地系统中。
顾翔
2024/09/10
3900
Hive学习-数据定义语句
尚硅谷电商数仓 6.0 hive DWD 层
DWD 层是对MySQL业务行为数据(从insert和update体现出来)进行统计的一个层,即维度层存放事实表
码农GT038527
2024/08/27
1810
Hive性能调优 | Fetch抓取
我们在刚开始学习hive的时候,都知道hive可以降低程序员的学习成本和开发成本,具体表现就在于可以将SQL语句转换成MapReduce程序运行。
王知无-import_bigdata
2020/11/06
5890
Hive性能调优 | Fetch抓取
大数据-hive基本语法整理
用户11147438
2024/06/04
2570
分区拉链表_列表分区
缺点:在数据量较大且资源有限的情况下对数据的合并耗时且表的设计有一定的要求(分区)
全栈程序员站长
2022/11/03
1.5K0
分区拉链表_列表分区
大数据项目实训之Hive环境集成
Hive是数据仓库中最常用的一个组件, 但是第一代的Hive的执行引擎是MapReduce,运行起来比较慢, 后面Hive的执行引擎用的比较多的有Tez,Spark
张哥编程
2024/12/07
1070
大数据项目实训之Hive环境集成
【踩坑实录】datax从pg同步数据到hive数据全为null问题
目录 一、问题描述 二、定位原因 三、解决方案  1、建表分隔符和导入时的分隔符不一致 1.修改建表分隔符 2.建表时直接指定好分隔符 3.针对分区表和无分区表的区别 2、字段的数据类型不一致 3、文件类型和压缩格式不对(ORC、TEXTFILE...) 4、字段值包含了分隔符,可以换一个分隔符试试 ---- 一、问题描述 hive建表ddl: create table table_name( a bigint, b string ) comment  'xx表'  partitioned by
chimchim
2022/11/13
1.3K0
【踩坑实录】datax从pg同步数据到hive数据全为null问题
Hive使用必知必会系列
注意:使用insert插入数据时会产生临时表,重新连接后会表会小时,因此大批量插入数据时不建议用insert tips1:在hdfs的hive路径下以.db结尾的其实都是实际的数据库 tips2:默认的default数据库就在hive的家目录
王知无-import_bigdata
2019/05/09
1.8K0
大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)
1、CentOS联网   配置CentOS能连接外网。Linux虚拟机 ping www.baidu.com 是畅通的。 注意:采用root角色编译,减少文件夹权限出现问题。 2、jar包准备(hadoop源码、JDK8、maven、protobuf) (1)hadoop-2.7.2-src.tar.gz (2)jdk-8u144-linux-x64.tar.gz (3)snappy-1.1.3.tar.gz (4)apache-maven-3.0.5-bin.tar.gz (5)protobuf-2.5.0.tar.gz
黑泽君
2019/03/11
1.2K0
大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)
[1020]hive中分区表的创建
需要注意的是:动态添加分区的时候,查询的分区字段必须放在最后面(order_dow),否则结果不是你想要的;
周小董
2021/07/14
1.9K0
[1020]hive中分区表的创建
尚硅谷电商数仓 6.0 hive DIM 层
通常情况下,时间维度表的数据并不是来自于业务系统,而是手动写入,并且由于时间维度表数据的可预见性,无须每日导入,一般可一次性导入一年的数据。
码农GT038527
2024/08/20
1600
hive只复制表结构不复制表数据
有一张ori_table,想新建一张表new_table,保持跟ori_table一样的表结构,但是不复制ori_table的数据。
chimchim
2023/10/17
4450
hive只复制表结构不复制表数据
【Spark数仓项目】需求八:MySQL的DataX全量导入和增量导入Hive
本需求将模拟从MySQL中向Hive数仓中导入数据,数据以时间分区。测试两种导入场景,一种是将数据全量导入,即包含所有时间分区;另一种是每天运行调度,仅导入当天时间分区中的用户数据。
火之高兴
2024/07/25
3120
相关推荐
助力工业物联网,工业大数据之ODS层构建:申明分区代码及测试【十】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验