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

Hive创建分区表并插入数据

业务中经常会遇到这种需求:数据每天全量更新,但是要求月底将数据单独保存一份以供后期查询某月节点的信息。这时就要考虑用到Hive的分区表实现,即按照月份创建分区表,相当于新的月份数据保存在新表,进而实现保存了历史数据。

分区表创建

分区表的创建本质是在HDFS创建了一个分区字段为名称的文件夹,插入数据时根据分区字段取值插入到文件中。

静态分区表

定义:静态分区在插入数据时要指定分区名,支持load、insert两种插入方式,主要用于分区少,分区名可以确定的情况。

动态分区表

定义:动态分区在插入数据时根据指定字段取值生成分区,只能使用insert方式插入数据。在定义时如果既有静态分区字段又有动态分区字段,动态分区字段放在最后。

分区表创建
create table tableName(field_name1 string,field_name2 string
)
partitioned by (p_field string,pmt string comment '年月')
row format delimited fields terminated by ','
STORED AS ORC
TBLPROPERTIES("orc.compress"="SNAPPY")   //压缩格式,或者使用语句stored as parquet
tblproperties ("skip.header.line.count"="1"); // 除去首行

数据载入

静态分区载入数据
-- 1、手动加载数据(会在所选数据库下生成/tableName/2023-10文件)
load data local inpath '/path/xxxx.csv' into table tableName partition (pmt='2023-10');-- 2、insert插入数据(增量插入)
insert into tableName partition(p_field='aaa',pmt='2023-10')
selectfield_name1,field_name2
fromtmp_tableName-- 3、insert插入数据(全量插入)
insert overwrite table tableName partition(p_field='aaa',pmt='${date}')
selectfield_name1,field_name2
fromtmp_tableName
动态分区插入数据
-- 1、动静分区
-- 设置动态分区参数
set hive.exec.dynamic.partition=true;  //开启动态分区功能
set hive.exec.dynamic.partition.mode=nonstrick; //默认参数strick也可实现动静分区insert overwrite table tableName partition(p_field='aaa',pmt)
selectfield_name1,field_name2
fromtmp_tableName-- 2、动态分区
set hive.exec.dynamic.partition=true;  //开启动态分区功能
set hive.exec.dynamic.partition.mode=nonstrick; insert overwrite table tableName partition(p_field,pmt)
selectfield_name1,field_name2
fromtmp_tableName-- 3、相关调优参数
set  hive.exec.max.dynamic.partitions.pernode=1000  //每个maper或reducer可以允许创建的最大动态分区个数,默认是100,超出则会报错。
set hive.exec.max.dynamic.partitions =1000  //一个动态分区语句可以创建的最大动态分区个数,超出报错
set hive.exec.max.created.files =10000  //全局可以创建的最大文件个数,超出报错。
http://www.lryc.cn/news/215636.html

相关文章:

  • 虚拟机防火墙关闭教程
  • 《研发效能(DevOps)工程师》课程简介(二)丨IDCF
  • EViews| 基础操作 备战下周机考
  • Web安全系列——敏感信息泄露与加密机制
  • 【kubernetes】k8s对象
  • 关注云栖大会的感受:从工业大脑到全面AI时代的进化
  • linux查看文件夹使用情况以及查看文件大小
  • VMware打开centos黑屏解决方法汇总以及解决出现的bug(Centos7系统网络异常等)
  • opencv第一个例子
  • 【Midjourney入门教程1】Midjourney的注册、订阅
  • 安防视频监控平台EasyCVR前端解码与后端解码的区别介绍
  • Azure 机器学习 - 无代码自动机器学习的预测需求
  • Ansible中的变量及加密
  • Java 性能优化之直接使用成员变量 VS 拷贝副本
  • 「专题速递」数据驱动赋能、赛事直播优化、RTC技术、低延时传输引擎、多媒体处理框架、GPU加速...
  • 【书籍篇】Spring实战第4版 第1部分 Spring的核心
  • 【AI视野·今日Sound 声学论文速览 第八期】Wed, 20 Sep 2023
  • 【HSPICE仿真】输入网表文件(6)用户自定义分析输出(.measure)
  • 安装Oracle 11g Error in invoking target报错
  • AlarmManager闹钟管理者
  • Opencv实现的三次样条曲线(Cubic Spline)插值
  • 【ElasticSearch系列-03】ElasticSearch的高级句法查询Query DSL
  • 【C++ 系列文章 -- 程序员考试 201811 下午场 C++ 专题 】
  • javaEE -15( 13000字 JavaScript入门 - 2)
  • AWS SAP-C02教程11-解决方案
  • ClickHouse Java多参UDF
  • 修改Typora默认微软雅黑字体
  • ESP32网络开发实例-Web服务器显示LM35传感器数据
  • ATFX汇市:美联储11月利率决议再暂停加息,紧缩货币政策或已接近尾声
  • g.Grafana之Gauge的图形说明