Hive 系列(四)—— Hive 常用 DDL 操作

hive 分区表,桶,倾斜知识点 为什么要引入分区和桶的概念?hive的select会扫描整个表的内容, 引入partition 桶【把hive表的数据划分为快】。partition更粗粒度 桶更细粒度 在小范围的查询上提高效率。分区:partitioned by(分区字段的名字 分区字段的类型)eg partitiond by(time date)静态分区:分区的值是确定的【假设有一个程序,每天都统计销售额,按照日期进行分区 每... 阅读详情

一、Database

1.1 查看数据列表

show databases;
复制代码

1.2 使用数据库

USE database_name;
复制代码

1.3 新建数据库

语法:

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name   --DATABASE|SCHEMA 是等价的
  [COMMENT database_comment] --数据库注释
  [LOCATION hdfs_path] --存储在 HDFS 上的位置
  [WITH DBPROPERTIES (property_name=property_value, ...)]; --指定额外属性
复制代码

示例:

CREATE DATABASE IF NOT EXISTS hive_test
  COMMENT 'hive database for test'
  WITH DBPROPERTIES ('create'='heibaiying');
复制代码

1.4 查看数据库信息

语法:

DESC DATABASE [EXTENDED] db_name; --EXTENDED 表示是否显示额外属性
复制代码

示例:

DESC DATABASE  EXTENDED hive_test;
复制代码

1.5 删除数据库

语法:

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
复制代码
  • 默认行为是 RESTRICT,如果数据库中存在表则删除失败。要想删除库及其中的表,可以使用 CASCADE 级联删除。

示例:

  DROP DATABASE IF EXISTS hive_test CASCADE;
复制代码

二、创建表

2.1 建表语法

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name     --表名
  [(col_name data_type [COMMENT col_comment],
    ... [constraint_specification])]  --列名 列数据类型
  [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
  ]  --分桶表分桶规则
  [SKEWED BY (col_name, col_name, ...) ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)  
   [STORED AS DIRECTORIES] 
  ]  --指定倾斜列和值
  [
   [ROW FORMAT row_format]    
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  
  ]  -- 指定行分隔符、存储文件格式或采用自定义存储格式
  [LOCATION hdfs_path]  -- 指定表的存储位置
  [TBLPROPERTIES (property_name=property_value, ...)]  --指定表的属性
  [AS select_statement];   --从查询结果创建表
复制代码

2.2 内部表

  CREATE TABLE emp(
    empno INT,
    ename STRING,
    job STRING,
    mgr INT,
    hiredate TIMESTAMP,
    sal DECIMAL(7,2),
    comm DECIMAL(7,2),
    deptno INT)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";
复制代码

2.3 外部表

  CREATE EXTERNAL TABLE emp_external(
    empno INT,
    ename STRING,
    job STRING,
    mgr INT,
    hiredate TIMESTAMP,
    sal DECIMAL(7,2),
    comm DECIMAL(7,2),
    deptno INT)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
    LOCATION '/hive/emp_external';
复制代码

使用 desc format emp_external 命令可以查看表的详细信息如下:

2.4 分区表

  CREATE EXTERNAL TABLE emp_partition(
    empno INT,
    ename STRING,
    job STRING,
    mgr INT,
    hiredate TIMESTAMP,
    sal DECIMAL(7,2),
    comm DECIMAL(7,2)
    )
    PARTITIONED BY (deptno INT)   -- 按照部门编号进行分区
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
    LOCATION '/hive/emp_partition';
复制代码

2.5 分桶表

  CREATE EXTERNAL TABLE emp_bucket(
    empno INT,
    ename STRING,
    job STRING,
    mgr INT,
    hiredate TIMESTAMP,
    sal DECIMAL(7,2),
    comm DECIMAL(7,2),
    deptno INT)
    CLUSTERED BY(empno) SORTED BY(empno ASC) INTO 4 BUCKETS  --按照员工编号散列到四个 bucket 中
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
    LOCATION '/hive/emp_bucket';
复制代码

2.6 倾斜表

通过指定一个或者多个列经常出现的值(严重偏斜),Hive 会自动将涉及到这些值的数据拆分为单独的文件。在查询时,如果涉及到倾斜值,它就直接从独立文件中获取数据,而不是扫描所有文件,这使得性能得到提升。

  CREATE EXTERNAL TABLE emp_skewed(
    empno INT,
    ename STRING,
    job STRING,
    mgr INT,
    hiredate TIMESTAMP,
    sal DECIMAL(7,2),
    comm DECIMAL(7,2)
    )
    SKEWED BY (empno) ON (66,88,100)  --指定 empno 的倾斜值 66,88,100
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
    LOCATION '/hive/emp_skewed';   
复制代码

2.7 临时表

临时表仅对当前 session 可见,临时表的数据将存储在用户的暂存目录中,并在会话结束后删除。如果临时表与永久表表名相同,则对该表名的任何引用都将解析为临时表,而不是永久表。临时表还具有以下两个限制:

  • 不支持分区列;
  • 不支持创建索引。
  CREATE TEMPORARY TABLE emp_temp(
    empno INT,
    ename STRING,
    job STRING,
    mgr INT,
    hiredate TIMESTAMP,
    sal DECIMAL(7,2),
    comm DECIMAL(7,2)
    )
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";
复制代码

2.8 CTAS创建表

支持从查询语句的结果创建表:

CREATE TABLE emp_copy AS SELECT * FROM emp WHERE deptno='20';
复制代码

2.9 复制表结构

语法:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name  --创建表表名
   LIKE existing_table_or_view_name  --被复制表的表名
   [LOCATION hdfs_path]; --存储位置
复制代码

示例:

CREATE TEMPORARY EXTERNAL TABLE  IF NOT EXISTS  emp_co  LIKE emp
复制代码

2.10 加载数据到表

加载数据到表中属于 DML 操作,这里为了方便大家测试,先简单介绍一下加载本地数据到表中:

-- 加载数据到 emp 表中
load data local inpath "/usr/file/emp.txt" into table emp;
复制代码

其中 emp.txt 的内容如下,你可以直接复制使用,也可以到本仓库的resources 目录下载:

7369	SMITH	CLERK	7902	1980-12-17 00:00:00	800.00		20
7499	ALLEN	SALESMAN	7698	1981-02-20 00:00:00	1600.00	300.00	30
7521	WARD	SALESMAN	7698	1981-02-22 00:00:00	1250.00	500.00	30
7566	JONES	MANAGER	7839	1981-04-02 00:00:00	2975.00		20
7654	MARTIN	SALESMAN	7698	1981-09-28 00:00:00	1250.00	1400.00	30
7698	BLAKE	MANAGER	7839	1981-05-01 00:00:00	2850.00		30
7782	CLARK	MANAGER	7839	1981-06-09 00:00:00	2450.00		10
7788	SCOTT	ANALYST	7566	1987-04-19 00:00:00	1500.00		20
7839	KING	PRESIDENT		1981-11-17 00:00:00	5000.00		10
7844	TURNER	SALESMAN	7698	1981-09-08 00:00:00	1500.00	0.00	30
7876	ADAMS	CLERK	7788	1987-05-23 00:00:00	1100.00		20
7900	JAMES	CLERK	7698	1981-12-03 00:00:00	950.00		30
7902	FORD	ANALYST	7566	1981-12-03 00:00:00	3000.00		20
7934	MILLER	CLERK	7782	1982-01-23 00:00:00	1300.00		10
复制代码

加载后可查询表中数据:

三、修改表

3.1 重命名表

语法:

ALTER TABLE table_name RENAME TO new_table_name;
复制代码

示例:

ALTER TABLE emp_temp RENAME TO new_emp; --把 emp_temp 表重命名为 new_emp
复制代码

3.2 修改列

语法:

ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type
  [COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];
复制代码

示例:

-- 修改字段名和类型
ALTER TABLE emp_temp CHANGE empno empno_new INT;
 
-- 修改字段 sal 的名称 并将其放置到 empno 字段后
ALTER TABLE emp_temp CHANGE sal sal_new decimal(7,2)  AFTER ename;

-- 为字段增加注释
ALTER TABLE emp_temp CHANGE mgr mgr_new INT COMMENT 'this is column mgr';
复制代码

3.3 新增列

示例:

ALTER TABLE emp_temp ADD COLUMNS (address STRING COMMENT 'home address');
复制代码

四、清空表/删除表

4.1 清空表

语法:

-- 清空整个表或表指定分区中的数据
TRUNCATE TABLE table_name [PARTITION (partition_column = partition_col_value,  ...)];
复制代码
  • 目前只有内部表才能执行 TRUNCATE 操作,外部表执行时会抛出异常 Cannot truncate non-managed table XXXX。

示例:

TRUNCATE TABLE emp_mgt_ptn PARTITION (deptno=20);
复制代码

4.2 删除表

语法:

DROP TABLE [IF EXISTS] table_name [PURGE]; 
复制代码
  • 内部表:不仅会删除表的元数据,同时会删除 HDFS 上的数据;
  • 外部表:只会删除表的元数据,不会删除 HDFS 上的数据;
  • 删除视图引用的表时,不会给出警告(但视图已经无效了,必须由用户删除或重新创建)。

五、其他命令

5.1 Describe

查看数据库:

DESCRIBE|Desc DATABASE [EXTENDED] db_name;  --EXTENDED 是否显示额外属性
复制代码

查看表:

DESCRIBE|Desc [EXTENDED|FORMATTED] table_name --FORMATTED 以友好的展现方式查看表详情
复制代码

5.2 Show

1. 查看数据库列表

-- 语法
SHOW (DATABASES|SCHEMAS) [LIKE 'identifier_with_wildcards'];

-- 示例:
SHOW DATABASES like 'hive*';
复制代码

LIKE 子句允许使用正则表达式进行过滤,但是 SHOW 语句当中的 LIKE 子句只支持 *(通配符)和 |(条件或)两个符号。例如 employees,emp *,emp * | * ees,所有这些都将匹配名为 employees 的数据库。

2. 查看表的列表

-- 语法
SHOW TABLES [IN database_name] ['identifier_with_wildcards'];

-- 示例
SHOW TABLES IN default;
复制代码

3. 查看视图列表

SHOW VIEWS [IN/FROM database_name] [LIKE 'pattern_with_wildcards'];   --仅支持 Hive 2.2.0 +
复制代码

4. 查看表的分区列表

SHOW PARTITIONS table_name;
复制代码

5. 查看表/视图的创建语句

SHOW CREATE TABLE ([db_name.]table_name|view_name);
复制代码

参考资料

LanguageManual DDL

作者:heibaiying
链接:https://juejin.cn/post/6844903949766492174
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

hiveSQL语法 分桶就是将这个128M的文件拆分成多个文件来存储,例如拆分成四个桶文件,那么计算的时候就会有4个reduce参与数据的计算和整合,那么数据的计算速度就会变快。直接创建表格,指定了对应的目录,也读取不到数据,因为表格是个分区表,只有表格的结构,没有分区的结构。假如有一个表格,只有一个文件,文件是128M,计算的时候将这个文件当成一个整体,使用一个map和一个reduce进行数据统计的;hive数据库所有的sql操作都是高延迟的,如果操作的数据量小于128M,那么我们可以去启动本地设置的开关,加快数据的操作。 阅读详情

相关推荐

Hive表DDL操作(一)

Hive表DDL操作(一);表分区;Create/Alter/Drop 数据库;Create/Drop/Truncate 表;Alter 表/列

qq_71139242的博客 8136

Hive(二)DDL DML DQL

Hive DDL

ks_1998的博客 2504

Hive 基本操作(一)DDL操作

Hive 基本操作(一)DDL操作1、DDL 操作1.1、库操作1.1.1、创建库1.1.2、查看库1.1.3、删除库1.1.4、切换库1.2、表操作1.2.1、创建表1.2.1.1、创建内部表1.2.1.2、创建外部表1.2.1.3、创建分区表1.2.1.3、创建分桶表1.2.1.4、使用 like 关键字拷贝表1.2.2、查看表结构信息1.2.3、修改表1.2.3.1、重命名表1.2.3.2、修改表属性1.2.3.3、修改 SerDe 信息1.2.3.4、增加/删除/改变/替换列1.2.3.5、增加/删

weixin_44387652的博客 3258

hive创建表详解

hive创建表详解

yiwei00000的专栏 972

8 Hive操作—DDL语言

一、Hive数据模型总览 每个表都必须归属于某个数据库。故Hive里面首先是数据库,再是表。公司里面可以每个业务线创建一个数据库,属于同一个业务线的数据再分别创建比如评论表、订单表、用户表 查看当前数据库: show databases /*查看当前数据库*/ 二、SQL中DDL语法的作用 DDL语言 (Data Definition Language),即数据定义语言,是和库、表相关的语言。仅对database、table进行增删改操作。 DDL核心语法由CREATE、 ALT...

m0_54115636的博客 1640

Hive ddl语法使用详解

hive ddl语法使用详解

congge_study的博客 8842

Hive SQL使用Skewed方式建表解决数据倾斜小记

Skewed Table可以提高有一个或多个列有倾斜值的表的性能,通过指定经常出现的值(严重倾斜),hive将会在元数据中记录这些倾斜的列名和值,在join时能够进行优化。若是指定了STORED AS DIRECTORIES,也就是使用列表桶(ListBucketing),hive会对倾斜的值建立子目录,查询会更加得到优化。 创建表是指定为 Skewed Table,如下例子,STORED AS DIRECTORIES是可选择的,它指定了使用列表桶(ListBucketing)。 单倾斜列建表 CREA.

qq_41018861的博客 1627

hive ddl语法使用详解

hive ddl语法使用

congge_study的博客 9339

Hive 系列(四)—— Hive 常用DDL操作

一、Database 1.1 查看数据列表 show databases; 1.2 使用数据库 USE database_name; 1.3 新建数据库 语法: CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name --DATABASE|SCHEMA是等价的 [COMMENT database_comment] --数据库注...

黑白影的博客 749

【大数据Hive系列】 Hive常用DDL操作

【大数据Hive系列】 Hive常用DDL操作

weixin_54707168的博客 489

别再对着手册发愁了!手把手教你读懂MIPI-DSI初始化命令(以Rockchip平台为例)

本文深入解析MIPI-DSI初始化命令在Rockchip平台的应用,帮助嵌入式工程师快速掌握LCD屏幕调试技巧。从协议基础到实战指南,详细拆解命令格式、DCS与Generic命令的区别,并提供Rockchip平台的调试全流程与高级技巧,解决常见显示问题。

weixin_42519781的博客 263

Hive SQL 数据定义语言(DDL)

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

m0_70882914的博客 2118

第1章 机器人SLAM算法工程师主要做什么的?(附SLAM学习路线及资料推荐)

对于想从事机器人与自动驾驶领域的在校大学生、研究生来说,建图定位算法工程师是一个极具发展潜力的岗位,而SLAM知识体系则是胜任该岗位的核心支撑。从基础的计算机工具、C++语言,到核心的开源框架、数学知识,再到硬件衔接与项目实践,每一个环节都不可或缺。建议大家结合自身兴趣确定侧重方向(如激光SLAM、融合定位),先通过开源项目建立实践认知,再补全理论知识,同时积极参与社区交流。

行知SLAM 952

三、Hive DDL数据库操作

Hive 中的数据库是构建数据仓库的基础单位。这次我们来了解 Hive 中创建、查看、切换、修改与删除数据库的 DDL 操作语法与用法,涵盖 COMMENT、LOCATION、DBPROPERTIES 等常用参数,辅以丰富示例与练习,助你扎实掌握 Hive 数据库管理核心能力。

专注于 Agent 工程、AI 产品、Harness Engineering、LLM 算法等方向,OpenMathModel、Nivik 等开源项目作者 14万+

redhawk:avgTW maxTW minTW minWC的区别

分析dynamic ir drop报告时会遇到这几个值,avgTW maxTW minTW minWC,如下图。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 691

milvus | 第 1 章:从“相似图片搜索”理解 Milvus 向量数据库

本文介绍了向量数据库Milvus的核心概念和基本架构。主要内容包括:1)向量数据库解决的是高维向量相似度检索问题,通过Embedding将非结构化数据转换为向量进行比较;2)Milvus作为分布式向量数据库,包含Proxy、Coordinator、QueryNode等多个组件协同工作;3)关键概念如Collection、Schema、Segment等构成了Milvus的数据组织方式;4)典型使用流程包括创建集合、插入数据、构建索引、加载数据和执行搜索五个步骤。文章为后续深入理解Milvus源码提供了基础知识

weixin_43674738的博客 133

Hive中的DDL操作

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

W_chuanqi的博客 2220

OpenClaw-遇到的问题- FailoverError: Model context window too small (4096 tokens). Minimum is 16000

摘要:OpenClaw配置文件中deepseek-reasoner模型的上下文窗口被默认设置为4096 tokens(实际支持128K),导致系统报错"Model context window too small"。解决方案是删除配置文件中的contextWindow和maxTokens字段,让系统自动获取模型真实能力,并重启OpenClaw服务。配置文件通常位于用户目录下的.openclaw/openclaw.json中。

直到世界的尽头 4157

Hive基本DDL操作

1、数据库的DDL操作 (1)创建数据库 数据库在HDFS上的默认存储路径是/user/hive/warehouse/数据库名.db hive > create database db_hive; 两者等价 hive > create database if not exists db_hive;(用if not exists判断是否已存在该数据库) (2)显示所有数据库 ...

fengge18306的博客 1415

Plecs standalone 4.9.5最新版本,赶紧来下载使用吧,需要做并网逆变器及光伏储能变换器的朋友赶紧下载起来

PLECS 4.9.5较4.7.1版实现全面升级:采用自适应求解器切换技术,支持多核CPU/GPU加速,仿真速度提升30-50%;新增模型引用功能,实现模块化设计;强化光伏/风电等新能源组件,支持多物理场耦合分析;优化代码生成功能,兼容多种硬件平台和FMU导入。新版特别适用于复杂电力电子系统、多域联合仿真及硬件在环测试项目,但对硬件配置要求更高。基础教学项目仍可使用4.7.1版本。建议用户根据项目复杂度选择升级方案。

2420

(十五)CX20106A 中超声波测量的应用

(十五)CX20106A 中超声波测量的应用

m0_52555663的博客 4511

Hive04_DDL操作

因此,使用内部表时,Hive会自动管理表的数据和元数据,而使用外部表时,则需要人工管理表的数据文件,但是可以让多个 Hive 实例共享同一个数据文件。通常情况下,如果数据只会被 Hive 使用,建议使用内部表,而如果数据需要被其他程序或服务使用,建议使用外部表。

tonyshi1989的博客 1890

题解:洛谷 P14357 [CSP-J 2025] 拼数

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。小 R 想知道,在他所有能拼成的正整数中,最大的是多少。你需要帮助小 R 求出他能拼成的正整数的最大值。小 X 给了小 R 一个字符串。输出一行一个正整数,表示小 R 能拼成的正整数的最大值。中的任意多个数字,按任意顺序拼成一个正整数。,表示小 X 给小 R 的字符串。#普及-# #其他排序#洛谷:[P14357。

团爸讲算法 1394

头歌 Hive表DDL操作(一)

头歌 Hive表DDL操作(一) 本实验任务要求使用Hive完成表分区操作,主要包括:在test4数据库创建分区表student,按stu_year和subject分区;添加两个分区(2018/Chinese和2018/Math);删除2018/Chinese分区。关键操作涉及创建分区表(PARTITIONED BY)、添加分区(ADD PARTITION)、重命名分区(RENAME TO PARTITION)和删除分区(DROP PARTITION)等DDL语句。

一名敲代码的苦13程序员 2096

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【Hive入门】Hive基础操作与SQL语法:DDL操作全面指南

Hive的数据定义语言(DDL)是用于创建、修改和删除数据库对象的命令集合,主要包括对数据库、表、视图等对象的操作。作为Hadoop生态系统中的数据仓库工具,Hive的DDL语法与传统的SQL语法高度相似,但也有一些特有的扩展。Hive DDL提供了完整的数据对象管理能力,从数据库到表再到分区和分桶。掌握这些操作是使用Hive进行大数据处理的基础。Hive的数据库修改功能有限,主要可以修改属性。分桶是将数据分散到固定数量的桶中,提高查询效率。

IT成长日记的博客 960

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Hive 系列(五)—— Hive 分区表和分桶表
下一篇: Python 进阶 (一) 初识 Python 数据元素: 列表 & 元组
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值