Hive创建分区表并插入数据

这篇具有很好参考价值的文章主要介绍了Hive创建分区表并插入数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

分区表创建

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

静态分区表

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

动态分区表

定义:动态分区在插入数据时根据指定字段取值生成分区,只能使用insert方式插入数据。在定义时如果既有静态分区字段又有动态分区字段,动态分区字段放在最后。文章来源地址https://www.toymoban.com/news/detail-727666.html

分区表创建
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')
select
	field_name1,
	field_name2
from
	tmp_tableName

-- 3、insert插入数据(全量插入)
insert overwrite table tableName partition(p_field='aaa',pmt='${date}')
select
	field_name1,
	field_name2
from
	tmp_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)
select
	field_name1,
	field_name2
from
	tmp_tableName

-- 2、动态分区
set hive.exec.dynamic.partition=true;  //开启动态分区功能
set hive.exec.dynamic.partition.mode=nonstrick; 

insert overwrite table tableName partition(p_field,pmt)
select
	field_name1,
	field_name2
from
	tmp_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  //全局可以创建的最大文件个数,超出报错。

删除分区

-- 删除指定分区
alter table dbname,tableName drop [if exists] partition(pmt='2023-11')
alter table dbname,tableName drop partition(pmt>'2023-11')

到了这里,关于Hive创建分区表并插入数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Hive大数据】Hive分区表与分桶表使用详解

    目录 一、分区概念产生背景 二、分区表特点 三、分区表类型 3.1 单分区 3.2 多分区

    2024年02月03日
    浏览(48)
  • HIVE表数据快速构造(分区表、orc、text)

    引言 当需要在hive数仓中去创建测试表并构造测试数据时,通常需要在安装了hive客户端的服务器环境下,通过执行命令的方式建表。通过在HDFS上上传和加载数据文件的方式来加载数据到hive表中。其中操作算不得多复杂,但比较依赖对环境和命令的熟悉,并且操作不够可视化

    2024年02月16日
    浏览(47)
  • 【DolphinScheduler】datax读取hive分区表时,空分区、分区无数据任务报错问题解决

    最近在使用海豚调度DolphinScheduler的Datax组件时,遇到这么一个问题:之前给客户使用海豚做的离线数仓的分层搭建,一直都运行好好的,过了个元旦,这几天突然在数仓做任务时报错,具体报错信息如下: com.alibaba.datax.common.exception.DataXException: Code:[HdfsReader-08], Description:[您尝

    2024年01月16日
    浏览(70)
  • Hive数据加载方式(load、insert;普通表、分区表)

    介绍 Hive 数据加载方式(insert、load) 基础语法: load data [local] inpath \\\'/opt/module/datas/student.txt\\\' [overwrite] into table student[partition ] 参数说明: 1 load data: 表示加载数据 2 local: 表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表 3 inpath: 表示加载数据的路径 相对路径,例如

    2024年02月03日
    浏览(58)
  • 大数据开发之Hive(查询、分区表和分桶表、函数)

    1、查询语句语法 2、书写次序和执行次序 顺序 书写次序 书写次序说明 执行次序 执行次序说明 1 select 查询 from 先执行表与表直接的关系 2 from 先执行表与表直接的关系 on 先执行表与表直接的关系 3 join on 先执行表与表直接的关系 join 先执行表与表直接的关系 4 where 先执行表

    2024年01月17日
    浏览(53)
  • hive分区表 静态分区和动态分区

    现有数据文件 data_file 如下: 2023-08-01,Product A,100.0 2023-08-05,Product B,150.0 2023-08-10,Product A,200.0 需要手动指定分区 现有源数据表如下: CREATE TABLE sales_source (     sale_date STRING,     product STRING,     amount DOUBLE ); INSERT INTO sales_source VALUES     (\\\'2023-08-01\\\', \\\'Product A\\\', 100.0),     (\\\'2023-08-

    2024年02月10日
    浏览(52)
  • Hive分区表实战 - 多分区字段

    本实战教程通过一系列Hive SQL操作,演示了如何在大数据环境下创建具有省市分区的大学表,并从本地文件系统加载不同地区的学校数据到对应分区。首先,创建名为 school 的数据库并切换至该数据库;接着,在数据库中定义一个名为 university 的分区表,其结构包括ID和名称两

    2024年01月15日
    浏览(49)
  • Hive分区表修改(增删)列

    环境:CDH6.3.0,Hive 2.1.1-cdh6.3.0 基础数据分区表test1,包含a,b,c,d共4列加分区列p_day,向其中插入两行数据 表中数据及parquet文件信息如下: test2表直接使用test1表的文件: 修复分区并查询数据 删除test2表的a列,看起来只有通过replace columns实现,但是运行报错,根据官方文档,只

    2023年04月26日
    浏览(88)
  • Hive 分区表和分桶表

    在《Hive 建表语句解析》文章中,建表的时候我们可以使用 PARTITIONED BY 子句和 CLUSTERED BY 子句来创建分区表和分桶表,为什么要创建分区表和分桶表呢?分区表和分桶表有什么区别呢? 1. 为什么分区 在Hive 查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时

    2023年04月23日
    浏览(67)
  • Hive 分区表新增字段 cascade

    在以前上线的分区表中新加一个字段,并且要求添加到指定的位置列。 加 cascade 操作 创建测试表 插入测试数据 查看现有数据 官网添加列的语法 注意: Hive 1.1.0 中有 CASCADE|RESTRICT 子句。 ALTER TABLE ADD|REPLACE COLUMNS CASCADE 命令修改表元数据的列,并将相同的更改级联到所有分区

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包