Hive DDL 数据定义

Hive 数据定义DDL详解 1.创建数据库 1.1 创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 hive (default)> create database db_hive; 1.2 避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法) hive> create database db_hive; FAIL... 阅读详情

Hive DDL 数据定义

一、数据库

1.1 创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
  1. 创建一个数据库,数据库在HDFS上默认的储存路径是/user/hive/warehouse/*.db

    create database db_hive;
    
  2. 要避免创建的数据库已经存在的错误,增加if not exists判断(标准写法)

    create database db_hive;
    # FAILED: Execution Error, return code 1 from 
    # org.apache.hadoop.hive.ql.exec.DDLTask. Database db_hive already exists
    
    create database if not exists db_hive;
    
  3. 创建一个数据库,指定数据库在HDFS上存放的位置

    create database db_hibe2 location  '/db_hive2.db';
    

1.2 查询数据库

  1. 显示数据库

    show databases;
    
    # 过滤
    show databases like 'db_hive*';
    
  2. 查看数据库详情

    desc database db_hive;
    
    # 显示详细信息
    desc database extended db_hive;
    
  3. 切换数据库

    use db_hive;
    

1.3 修改数据库

用户可以使用alter database命令为某个数据库的dbproperties 设置键值对属性值来描述这个数据库的属性信息。

alter database db_hive
set dbproperties('createtime'='20210826');

1.4 删除数据库

  1. 删除空数据库

    drop database db_hive2;
    
  2. 如果数据库不一定存在,最好采用if exists判断数据库是否存在

    drop database db_hive2;
    # FAILED: SemanticException [Error 10072]: Database does not exist: db_hive2
    
    drop database if exists db_hive;
    
  3. 如果数据库不为空,可以采用cascade命令,强制删除

    drop database db_hive;
    # FAILED: Execution Error, return code 1 from 
    # org.apache.hadoop.hive.ql.exec.DDLTask. 
    # InvalidOperationException(message:Database db_hive is not empty. One or more tables exist.)
    
    drop database db_hive cascade;
    

二、表

2.1 创建表

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]
[AS select_statement]

字段解释说明

  1. CREATE TABLE创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;可以使用IF NOT EXISTS来忽略异常。

  2. EXTERNAL关键字可以让用户创建一个外部表,在建表的同时可以指定一个指向实际数据的路径,在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。

  3. COMMENT为表和列添加注释。

  4. PARTITIONED BY创建分区表。

  5. CLUSTERED BY 创建分桶表。

  6. SORTED BY 不常用,对桶中的一个或对个列另外排序。

  7. ROW FORMAT

    ROW FORMAT DELIMITED [FIELDS TERMINATED BY char] 
    [COLLECTION ITEMS TERMINATED BY char]
    [MAP KEYS TERMINATED BY char]
    [LINES TERMINATED BY char]
     | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
    

    用户在建表的时候可以自定义SerDe或者使用自带的SerDe。如果没有指定ROW FORMAT或者ROW FORMAT DELIMITED,将会使用自带的SerDe。在建表的时候,用户需要为表指定列,用户指定表的列的同时也会指定自定义的SerDe,Hive通过SerDe确定表的具体的列的数据。

    例如:

    create table test1(
    name string,
    friends array<string>,
    children map<string, int>,
    address struct<street:string, city:string>
    )
    row format delimited fields terminated by ','
    collection items terminated by '_'
    map keys terminated by ':'
    lines terminated by '\n';
    

    SerDe是Serialize/Deserilize的简称,hive使用SerDe进行序列化/反序列化。

  8. STORED AS 指定储存文件类型

    常用的储存文件类型:SEQUECEFILE(sequeceFile 二进制文件)、TEXTFILE(textFile 文本)、RCFILE(rcFile 列式储存格式文件)

    如果文件数据是纯文本,可以使用stored as textfile ;如果数据需要压缩,使用stored as sequecefile。

  9. LOCATION 指定表在HDFS上的储存位置。

  10. AS 后跟查询语句,根据查询结果创建表。

  11. LIKE 允许用户复制现有的表结构,但是不复制数据。

2.2 管理表

  1. 定义

    默认创建的表都是管理表,也称为内部表。因为内部表,Hive会或多或少的控制着数据的生命周期。Hive默认情况下会将这些表的数据储存在配置项hive.metastore.warehouse.dir(例如:/user/hive/warehouse)所定义的目录的子目录下。

    当删除一个管理表时,Hive也会删除这个表中的数据。管理表不适合和其他工具共享数据。

  2. 例子

    1. 原始数据

      1001 ss1
      1002 ss2
      1003 ss3
      1004 ss4
      1005 ss5
      1006 ss6
      1007 ss7
      1008 ss8
      1009 ss9
      1010 ss10
      1011 ss11
      1012 ss12
      1013 ss13
      1014 ss14
      1015 ss15
      1016 ss16
      
    2. 创建普通表

      create table if not exists student(
      id int, name string
      )
      row format delimited fields terminated by '\t'
      stored as textfile
      location '/user/hive/warehouse/student';
      
    3. 根据查询结果创建表,查询的结果会添加到新创建的表中

      create table if not exists student2 as select id, name from student;
      
    4. 根据已经存在的表结构创建表

      create table if not exists student3 like student;
      
    5. 查询表的类型

      desc formatted student2;
      # Table Type: MANAGED_TABLE
      

2.3 外部表

  1. 定义

    因为外部表中的数据是外部的,所以Hive并非认为其完全拥有这份数据。所以,删除表不会删除数据,不过描述表的元数据信息会被删除。

  2. 管理表和外部表的使用场景

    每天将收集到的网站日志定期流入HDFS文本文件。在外部表(原始日志表)的基础上做大量的统计分析,用到的中间表、结果表使用内部表储存,数据通过select+insert进入内部表。

  3. 例子

2.4 管理表和外部表的互相转换

  1. 查询表的类型

    desc formatted student;
    # Table Type: MANAGED_TABLE
    
  2. 修改内部表student为外部表

    alter table student set tblproperties('EXTERNAL'='TRUE');
    

    注意:('EXTERNAL'='TRUE')和('EXTERNAL'='FALSE')是固定写法,区分大小写。

  3. 查询表的类型

    desc formatted student;
    # Table Type: EXTERNAL_TABLE
    
  4. 修改内部表student为内部表

    alter table student tblproperties('EXTERNAL'='FALSE');
    
  5. 查询表的类型

    desc formatted student;
    # Table Type: MANAGED_TABLE
    

2.5 修改表

  1. 重命名表

    alter table table_name rename to new_table_name;
    
  2. 增加/修改/替换列信息

    # 更新列
    ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name 
    column_type [COMMENT col_comment] [FIRST|AFTER column_name]
    
    # 增加和替换列
    ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT 
    col_comment], ...)
    

    注意:ADD是代表新增一个字段,字段位置在所有列后面(partition列前),REPLACE则是表示替代表中所有字段。

  3. 例子

    # 重命名 
    alter table student rename to student2;
    
    # 添加列
    alter table student add columns(stud string);
    
    # 更新列
    alter table student change column stud stu string;
    
    # 替换列
    alter table student replace columns(id int, name string, loc string);
    

2.6 删除表

drop table student;
RTX 50系显卡(5080/5090D)CUDA 12.8环境下的vLLM部署避坑与实战指南 本文为RTX 5080/5090D显卡用户提供了在CUDA 12.8环境下部署vLLM的完整实战指南。文章详细介绍了从驱动安装、CUDA 12.8环境配置、PyTorch Nightly版本精准匹配,到vLLM源码编译及常见报错排查的全过程,帮助开发者高效利用新一代硬件进行大模型推理。 阅读详情

相关推荐

Sigrity IBIS建模实战:如何用T2B工具快速转换SPICE模型(附避坑指南)

本文详细介绍了如何使用Sigrity T2B工具将SPICE模型高效转换为IBIS模型,涵盖从环境配置、模型预处理到转换流程和验证策略的全过程。通过实战案例和避坑指南,帮助硬件工程师掌握高速电路设计中的IBIS建模技术,提升信号完整性分析效率。

weixin_29243279的博客 390

Hive---DDL

因此通常使用这些工具将数据流式传输到现有分区中,但是这会使读者感到脏读(也就是说,他们将在开始查询后看到写入的数据),并将许多小文件留在目录中,这将给NameNode带来压力。换句话说,Hive完全管理表(元数据和数据)的生命周期,类似于RDBMS中的表。当您删除内部表时,它会删除数据以及表的元数据。如果不对表进行分区,那么在执行查询的时候,会对全表进行检索才能得出相应的结果,如果数据文件很多的话,则会大大降低查询效率,此时可以通过对表进行分区,避免查询时候全表扫描数据,极大的提升了查询效率。

weixin_47109902的博客 862

视觉辅助RIS波束追踪:用摄像头“看见”用户,实现毫秒级波束对准

在无线通信领域,波束成形技术是提升高频段信号覆盖与质量的核心手段,其原理是通过调整天线阵列的相位,使信号能量在特定方向相干叠加,形成高增益定向波束。这项技术的价值在于能有效克服高频信号路径损耗大、穿透性差的瓶颈,广泛应用于5G/6G、毫米波通信及室内定位等场景。然而,传统波束追踪依赖信道估计或波束扫描,存在训练开销大、实时性差的问题。本文聚焦于一种创新解决方案:将计算机视觉与可重构智能表面(RIS)相结合。通过摄像头直接感知用户位置,并利用RIS快速重构反射波束方向,实现了近乎零开销、毫秒级延迟的波束追踪,

weixin_33552698的博客 620

Hive-DDL详解(超详细)

本教程将介绍HiveQL的数据定义语言(DDL),帮助您了解如何在Hive中创建数据库、切换数据库、创建表格以及查看和删除表格。通过学习这些基本操作,您可以更好地组织和管理数据,并进行高效的查询和分析。创建数据库是在Hive中组织和管理表的第一步。在本教程中,我们学习了一些重要的HiveQL DDL命令。首先,我们了解到如何使用CREATE DATABASE命令来创建新的数据库,并使用USE命令切换到指定的数据库。

zcs2312852665的博客 1378

修勾逃生巨人危机v10.9.9修改版:免广告无限内购与GM工具详解

游戏修改技术是通过对原版游戏程序进行代码层面的调整,实现特定功能的增强或限制解除。其核心原理涉及内存修改、资源替换和API拦截等技术手段,能够有效提升用户体验和测试效率。在移动游戏领域,免广告和无限内购是常见的技术实现方向,通过屏蔽广告SDK调用和修改内购验证逻辑,为用户提供更流畅的游戏体验。这类技术特别适合游戏开发者进行功能测试,以及玩家希望完整体验游戏内容而不受商业模式限制的场景。以修勾逃生巨人危机v10.9.9版本为例,该修改版集成了GM工具开启功能,通过特定操作路径即可激活调试面板,实现了广告去除和

weixin_30855099的博客 2588

NDVI空间分布变化Slope趋势分析与F检验(自用)

1.NDVI数据预处理2.一元线性回归分析3.Slope趋势分析与F检验

什么都学亿点点的博客 9017

Hive中的DDL操作

在Apache Hive中,托管表(managed table)是由Hive自己管理其数据存储的表,因此,当您在Hive中执行TRUNCATE操作时,Hive会直接删除表中的所有数据,而存储表结构和元数据。在创建内部表的时候可以不指定路径进行创建,但是在创建外部表的时候,需要指定外部数据的存储位置,也就是指定外部存储的路径。外部表,与之相对应的是内部表(管理表)。该语法允许用户利用select查询语句返回的结果,直接建表,表的结构和查询语句的结构保持一致,且保证包含select查询语句放回的内容。

W_chuanqi的博客 2220

iTerm2+oh-my-zsh最全配置

iTerm2+oh-my-zsh最全配置安装前先看效果图一.安装[iTem2](https://iterm2.com/)二.安装[oh-my-zsh](https://ohmyz.sh/)三.安装[Powerline](https://powerline.readthedocs.io/en/latest/installation.html)四.安装 [Meslo](https://github.com/powerline/fonts) 字体库五.安装agnoster主题六.安装语法高亮七.安装代码补全插件八

xinximo的博客 2609

Hive学习——DDL&DML&DQL语句

Hive学习——DDL&DML语句

雷神乐乐的博客 2222

csp-j/s

CSP-J/S 是中国计算机学会(CCF)主办的 ‌‌(Certified Software Professional Junior/Senior),是信息学奥赛(NOI)体系的入门级选拔考试,也是国内最具权威性的青少年编程能力认证之一。

gxyxxrYYDS的博客 2023

SAP-ABAP:SAP MM采购订单增强核心BAdI:IF_EX_ME_PROCESS_PO_CUST 深度解析与最佳实践指南

SAP MM采购订单增强核心BAdI:IF_EX_ME_PROCESS_PO_CUST 关键摘要 核心要点 技术定位:SAP MM模块采购订单处理的核心增强框架,属于第二代BAdI技术,支持多实例并行实现 架构特点: 覆盖采购订单全生命周期(创建/修改/显示) 嵌入ME21N/ME22N/ME23N的标准处理流程 提供字段级、抬头、行项目、账户分配等多层次增强点 关键方法: INITIALIZE:事务初始化时预加载数据 PROCESS_HEADER:处理抬头数据变更 PROCESS_ITEM:处理行项目字段

baidu_35680696的博客 809

Hive的基本SQL操作(DDL篇)

Hive SQL(HQL)与SQL的语法大同小异,基本上是相通的,学过SQL的使用者可以无痛使用Hive SQL。只不过在学习HQL语法的时候,特别要注意Hive自己特有的语法知识点,今天我们就来学习下Hive SQL的DDL语句

qq_25409421的博客 1万+

203.华为组网实例:VLAN间互通DHCP中继实验

SW核心交换机上配置DHCP中继。

迷逝 8430

Hive之数据定义DDL

Hive之数据定义DDL

优快云2022博客之星Top39;华为云博主7&,优快云、稀土掘金、微信公众号、阿里云开发者社区、腾讯云社区、博客园、知乎、51CTO同名博主WHYBIGDATA; 1767

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Hive SQL 数据定义语言(DDL)

数据定义语言DDL),是 SQL 语言集中对数据库内部的对象结构进行创建,删除,修改等的操作语言, 这些数据库对象包括database( schema)、 table、 view、 index 等。核心语法由CREATEALTER与DROP三个所组成。DDL 并不涉及表内部数据的操作。在某些上下文中,该术语也称为数据描述语言,因为它描述了数据库表中的字段和记录。Hive中的数据类型指的是Hive表中的列字段类型。原生数据类型(primitive data type)和复杂数据类型。

m0_70882914的博客 2118

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

HIVE 总结 三 Hive DDL数据定义

HIVE 总结 三 Hive DDL数据定义 本篇总结hive的数据定义,也就是表,库相关的操作命令 关于hive的介绍,安装在前面两篇文章里面 文章目录HIVE 总结 三 Hive DDL数据定义1.建库2.库的查询,修改,删除3.建表4.表的修改,删除,清除5.内部表(管理表)和外部表的区别 1.建库 语法 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [

千山暮雪CN 577

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Hive之DDL数据定义

DDL数据定义一、创建数据库二、修改数据库三、查询数据库3.1 显示数据库3.2 查看数据库详情3.3 切换当前数据库四、删除数据库五、创建表5.1 管理表(内部表)5.2 外部表六、分区表6.1 分区表基本操作6.2 分区表注意事项七、修改表7.1 重命名表7.2 增加和删除表分区7.3 增加/修改/替换列信息八、删除表 数据库模式定义语言DDL(Data Definition Languag...

weixin_43520450的博客 481

Hive语法之DDL数据定义

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Hive语法之DDL数据定义前言一、Hive数据库操作1.1 创建数据库1.2 查询数据库1.3 修改数据库1.4 删除数据库二、Hive表操作2.1 创建表2.2 管理表2.3 内部表和外部表的相互转换2.4 修改表总结 前言 本文介绍了Hive中DDL数据定义语言的使用。 提示:以下是本篇文章正文内容,下面案例可供参考 一、Hive数据库操作 1.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] dat

aw9165628的博客 237

5. Hive技术之DDL数据定义

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive是十分适合数据仓库的统计分析和Windows注册表文件。

weixin_45267102的博客 390

大数据Hive数据定义语言DDL

目录1 数据定义语言(DDL)概述1.1 DDL语法的作用1.2 Hive中DDL使用2 Hive DDL建表基础2.1 完整建表语法树3 Hive数据类型详解3.1 整体概述3.2 原生数据类型3.3 复杂数据类型3.4 数据类型隐式、显示转换4 Hive读写文件机制4.1 SerDe是什么4.2 Hive读写文件流程4.3 SerDe相关语法4.4 LazySimpleSerDe分隔符指定4.5 默认分隔符5 Hive数据存储路径5.1 默认存储路径5.2 指定存储路径6 案例—王者荣耀6.1 原生数据

赵广陆 863

Hive -- DDL 数据定义

文章目录Hive-- DDL数据定义一、数据库的操作1 创建数据库2 查询数据库3 修改数据库4 删除数据库二、表的操作1 、管理表2、外部表3、管理表与外部表的互相转换4、分区表5、 修改表6、 删除表 Hive-- DDL数据定义 一、数据库的操作 1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 hive (defau...

Mr_huang的博客 572

Hive数据定义语言(DDL)概述

Hive数据定义语言(DDL)概述 1.什么是DDL语言? 数据定义语言 (Data Definition Language, DDL) 是SQL语言集中对数据库内部的对象结构进行创建,删除,修改等的操作语言,这些数据库对象包括database(schema)、table、view、index等。核心语法由CREATE、ALTER与DROP三个所组成。DDL并不涉及表内部数据的操作。 完整建表语法树 CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXIS

weixin_48626604的博客 2361

(第四章)Hive之DDL数据定义

Hive之DDL数据定义 4.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 hive (default)> create database db_hive; 2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法) hive (default)> create database...

汪云辉的博客 225

Hive-DDL数据定义

第4章 DDL数据定义 4.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 hive (default)> create database db_hive; 2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法) hive ...

weixin_34109408的博客 133
上一篇: Hive 数据类型
下一篇: Hive DML 数据操作
努力生活的黄先生
博客等级 码龄7年 38粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力生活的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值