数仓-hive DDL (带你手敲秒懂hive三种常见分区)

hive 数仓DDL 分区

分区是将表的数据以分区字段的值作为目录去存储

---> 减少磁盘IO, 方便数据管理

静态分区

  • 创建外表同时指定静态分区字段

    create  table if not exists table_name(id int,name string)partitioned by (day string,h string);
                                     
  • 添加静态分区

    alter table table_name add  if not exists partition (day='2024-03-30');

  • 单分区的数据写入

    insert overwrite table table_name partition (day="2024-03-03")
    select id,name from table_name limit 10;

  • 多分区数据写入

    insert overwrite table table_name partition (day="20240203",hour="14");

  • 查看分区数据

    select * from table_name    where day="2024-03-30";
    select * from table_name where day="20240203" and hour="14";

  • 查看分区

    show partitions talbe_name;

动态分区

  • 使用动态分区之前要开启动态分区

    # hive默认是关闭动态分区的,所以先开启允许所有分区是动态的,否则要先静态再动态
    set hive.exec.dynamic.partition=true;
    set hive.exec.dynamic.partition.mode=nonstrict;
     
  • 写入数据

    # 原表中字段为id,name,create_time
    # 动态分区是根据原表字段进行表达式的转化得到的动态分区字段的value
    insert overwrite table table_name partition(day)
    select id ,name ,create_time,
    date_format(create_time,"yyyy-MM-dd") as day
    from info;  

动静混合-> 半动半静

# 对于这种混合分区,静态字段必须再前,动态字段要在后面 -> must
insert overwrite table tableTest partition(d="date",day)
select id,name,create_time,
date_format(create_time,"yyyy-mm-dd") as day
from info;
另外对于动态分区其余相关参数的设置:# 规定在一个MR任务中hive允许创建最大分区数值1024,避免在进行动态分区时产生过多的小文件分区,造成数据倾斜问题,超过就会终止任务
SET hive.exec.max.dynamic.partitions=1024; # 规定在一个节点上可以创建的最大分区数量,超过就会抛异常
SET hive.exec.max.dynamic.partitions.pernode=128; # 规定hive运行中创建最大文件数限制,超过程序任务即失败
SET hive.exec.max.created.files=10000; # 这里设置为true,程序会在某个动态分区为null时,hive将在完成最后一个任务后报一个错误,
# 如果不想因为null动态分区影响整个hive的动态分区,就设置为false即可
SET hive.error.on.empty.partition=true;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python angr库二进制分析和逆向工程

angr 是一个 Python 库,主要用于进行二进制分析和逆向工程。它允许研究人员自动化地探索和分析二进制文件(如可执行文件、库等),并提供了一系列工具和组件来解析、模拟和检查二进制代码。 angr 最初是由 UC Santa Barbara 的 She…

【Vue】搭建第一个vue3+vite前段项目

不要奇怪我为啥突然开始写前端的文章,唉,一切都是公司的任务罢了。 其实这周学习了前端和coverity,但是后者就算学了我也不能写在我博客里,所以还是写一写前端吧。 node.js 和 npm npm是一个类似于 maven 的包管理器。 去以下…

Excel数据分子-----------VLOOKUP函数

选择区域的时候一定要把查询条件所处的列放在第一列。 跨表使用 一定要在括号外边摁回车键。 通配符查找 列后面跟上**&“*”** 近似查找 数值格式问题 HLOOP函数 这个是在行中进行搜索 indexmatch实现匹配查找 先利用match查找出在哪一行,再利用index定…

ssm007亚盛汽车配件销售业绩管理统+jsp

亚盛汽车配件销售业绩管理系统设计与实现 摘 要 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让亚盛汽车配件销售信息的管理模式进行升级,也为了更好的维护亚盛汽车配件销售信息&am…

【Java八股学习】Redis持久化 思维导图

说明 文章内容通过学习小林Coding内的优质文章后整理而来,整理成思维导图的方式是为了帮助自己理解、记忆和复习。如若侵权请联系删除,再次对小林Coding内的优质文章表示感谢。参考文章如下: AOF 持久化是怎么实现的?RDB 快照是…

Vue源码---虚拟Dom

Vue源码—虚拟Dom 真实dom 浏览器引擎渲染工作流程大致分为5步,创建dom树 -> 创建style Rules -> 创建render树 -> 布局layout -> 绘制painting 虚拟dom 虚拟dom节点,通过js的object 对象模拟dom中的节点,然后通过特定的rend…

seldom 实战技巧

seldom 是我一直在维护的自动化测试框架。目前GitHub已经 500 star。 最近在项目中使用Seldom poium 编写自动化测试用例。接下来,我就分享一些使用技巧。 如何参数化测试用例 网站的首页,如上面的导航。于是,开始利用poium编写元素定位。…

Leetcode 3098. Find the Sum of Subsequence Powers

Leetcode 3098. Find the Sum of Subsequence Powers 1. 解题思路2. 代码实现 题目链接:3098. Find the Sum of Subsequence Powers 1. 解题思路 这一题思路上的话还是比较直接的,由于我们只需要求出每一个可能的power值,然后求出对应的po…

GitHub常用命令

GitHub常用命令 远程仓库相关命令拉取项目到本地拉取远程仓库推送远程仓库 分支操作相关命令查看所有本地分支查看所有远程分支查看所有本地分支和远程分支切换分支创建本地分支创建远程分支(本地分支push到远程)创建新分支并切换到新分支合并指定分支到当前分支删除分支 代码提…

基于 FFmpeg 和 SDL 的音视频同步播放器

基于 FFmpeg 和 SDL 的音视频同步播放器 基于 FFmpeg 和 SDL 的音视频同步播放器前置知识音视频同步简介复习DTS、PTS和时间基 程序框架主线程解复用线程音频解码播放线程视频解码播放线程 音视频同步逻辑源程序结果工程文件下载参考链接 基于 FFmpeg 和 SDL 的音视频同步播放器…

蓝桥杯备考随手记: Math 类中常用方法

Java的Math类是一个包含数学操作方法的实用工具类。它提供了许多用于执行各种数学计算的静态方法。 下面是Math类中一些常用的方法: abs():返回参数的绝对值。 int absoluteValue Math.abs(-10); System.out.println(absoluteValue); // Output: 10 c…

EtherCAT主站SOEM -- 25 -- STM32F767-SOEM通过 PV模式(速度模式)控制一个电机转圈圈

EtherCAT主站SOEM -- 25 -- STM32F767-SOEM通过 PV模式(速度模式)控制一个电机转圈圈 0 QT-SOEM视频预览及源代码下载:0.1 QT-SOEM视频预览0.2 QT-SOEM源代码下载0.3 STM32F7-SOEM视频预览0.4 STM32F7-SOEM源代码下载1 程序文件修改替换1.1 allvalue.h1.2 allvalue.c1.3 mot…

BaseDao入门使用

目录 一、什么是BaseDao?BaseDao的优点:BaseDao用来做什么操作? 二、BaseDao封装增删改查 案例演示:1、java与数据库进行连接2、连接后可对其进行操作(增、删、改)返回影响行数3、查询 查询一个字段(返回一…

python基础练习题6

1、找出10000以内能被5或6整除,但不能被两者同时整除的数(函数) def find_numbers(m,n):result []for num in range(m,n):if (num % 5 0 or num % 6 0) and not (num % 5 0 and num % 6 0):result.append(num)return resultprint(find_…

Linux: 进程优先级

Linux: 进程优先级 一、进程优先级概念二、如何查看进程优先级三、如何修改进程的优先级(PRL vs NI)四、为何优先级PRL必须限定范围五、进程其他特性 一、进程优先级概念 优先级的本质就是排队,而排队则是资源不足所引起的。在计算机中&#…

static修饰的方法为什么不能被覆盖?

在Java中,static方法不能被覆盖(overridden)的根本原理可以从以下几个角度进行解释: 静态绑定与动态绑定: 非静态方法(非static方法)的调用遵循动态绑定原则,即在运行时根据对象的实…

分布式系统概述(重要关键词加粗)

学习目标: 了解分布式 学习内容: 分布式系统是由多个计算机节点组成的系统,这些节点通过网络相互连接并协同工作,以完成共同的任务或服务。在分布式系统中,每个节点都运行着一部分应用程序,并且通常拥有自…

Leetcode 3100. Water Bottles II

Leetcode 3100. Water Bottles II 1. 解题思路2. 代码实现 题目链接:3100. Water Bottles II 1. 解题思路 这一题就是按照题目翻译一下,按照题中给出的规则不断进行bottle的兑换,直至无法兑换为止,即可得到最终的答案。 2. 代…

【3.31】

智乃想考一道完全背包(Easy version) 思路:虚拟物品的思路。可以把 l ∈ [ 1 , k ] , r ∈ [ k , n ] l\in[1, k], r\in[k, n] l∈[1,k],r∈[k,n] 的区间 ( l , r ) (l, r) (l,r) 看作一个虚拟物品,体积和价值为区间的体积和与价值和。这样做完全背包…

【项目技术介绍篇】若依开源项目RuoYi-Cloud前端技术介绍

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…