码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • hive 静态分区与动态分区(笔记)


    目录

    前言:

    静态分区:

     1.创建分区

    2.删除分区

    3.在分区中插入数据

    4.查看分区表数据

    动态分区 :

    2.查看v表源数据

    3.以emp_name为动态字段数据抽取到employee表

    总结


    前言:

    Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区,这样的查询效率会提高很多,从而可以更快地查询数据。

    分区可以是静态分区和动态分区

    静态分区:

    静态分区:是在表创建之后创建好的,可以手动指定分区键的值(直接给值)。静态分区通常用于数据量较为固定的场景,分区信息不会经常变更。在创建表时,可以使用partitioned by语句指定分区键,示例如下:

    1. CREATE TABLE employee (
    2. emp_id INT,
    3. emp_name STRING,
    4. emp_date STRING,
    5. emp_salary FLOAT
    6. )
    7. PARTITIONED BY (emp_dept STRING);

     创建及插入数据:

     

     1.创建分区

    alter table employee add partition(emp_dept='20230920');

    alter table employee add partition(emp_dept='20230910');

    alter table employee add partition(emp_dept='20230912');

    alter table employee add partition(emp_dept='20230917');

     

    2.删除分区

    alter table employee drop partition (emp_dept='20230910');

    alter table employee drop partition (emp_dept='20230920');

    alter table employee drop partition (emp_dept='20230914');

    3.在分区中插入数据

    从其他表中数据插入并定义区间

    insert into gh_test.employee partition(emp_dept='20230914') select * from v where emp_date='2023-09-14'

    4.查看分区表数据

    select * from gh_test.employee where emp_dept='20230914' 

     


    动态分区 :

    动态分区:

    指的是分区的字段值是基于查询结果自动推断出来的(分区没有直接给值),使用Insert Select语句进行插入。

    动态分区通常用于数据量较大、分区信息需要随着数据导入而变化的场景。在插入数据时,

    首先开启动态分区:

    1. # 表示开启动态分区
    2. set hive.exec.dynamic.partition=true;
    3. set hive.exec.dynamic.partition.mode=nostrict;

    2.查看v表源数据

    3.以emp_name为动态字段数据抽取到employee表

    1. insert overwrite table gh_test.employee
    2. partition (emp_dept) //先声明不定义值
    3. select v1.*,v1.emp_name from v as v1 //v1.emp_name 为分区值(可以理解为以这个emp_name字段进行了分区)

    4.查看分区结果

    show partition gh_test.employee

    总结

    静态分区和动态分区各有其优缺点,需要根据实际情况进行选择。静态分区可以提高查询效率,但需要手动维护分区信息;动态分区可以自动维护分区信息,但对于大量数据导入可能会比较慢。

  • 相关阅读:
    T1175计算两个日期之间的天数
    Android R给自家UA工具挖坑
    第三章:最新版零基础学习 PYTHON 教程(第五节 - Python 运算符—Python 逻辑运算符及示例)
    Spring IOC中bean的生命周期
    ssh登录local报错
    一、vue介绍
    Web自动化测试进阶 —— Selenium模拟鼠标操作
    iOS ------ ARC的工作原理
    Apache Shiro 组件反序列化漏洞分析
    Unescaped & or nonterminated character/entity reference 报错-IDEA
  • 原文地址:https://blog.csdn.net/m0_69097184/article/details/132901406
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号