大数据从入门到实战 - Hive表DDL操作(二)

该博客围绕Hive数据定义语言实践展开。介绍了Hive数据定义语言包含创建、删除、修改数据库、表、视图、索引等内容。实践部分详细讲解了创建、删除、修改视图和索引两关,测评时需耐心等待。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
在这里插入图片描述

一、关于此次实践

1、实战简介

Hive数据定义语言(Date Definition Language)包括 Create/Drop/Alter数据库、Create/Drop/Truncate表、Alter 表/分区/列、Create/Drop/Alter视图、Create/Drop/Alter索引、Create/Drop函数、Create/Drop/Grant/Revoke角色和权限等内容。

2、全部任务

在这里插入图片描述

二、实践详解

1、第1关:Create/Drop/Alter 视图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#********* Begin *********#
echo "
CREATE DATABASE IF NOT EXISTS test1;
CREATE TABLE IF NOT EXISTS test1.student(
Sno INT,
name STRING,
age INT,
sex STRING,
score STRUCT<Chinese:FLOAT,Math:FLOAT,English:FLOAT>)
;
CREATE VIEW student_view(
Sno,
name_length,
age,
sex
) 
AS SELECT Sno,length(name),age,sex FROM student;
alter view student_view rename to student_info_views;
drop view if exists student_info_views;
"
#********* End *********#

评测
在这里插入图片描述

2、第2关:Create/Drop/ALTER 索引

在这里插入图片描述
按照以上要求填写命令。每个要求对应一条命令,共5条命令,以;隔开。由于hive启动时间较长,测评时请耐心等待,大概需要时间:1-3分钟。

#********* Begin *********#
echo "
CREATE DATABASE IF NOT EXISTS test2
LOCATION '/hive/test2'
WITH DBPROPERTIES('creator'='Floret','date'='2020-11-16');
CREATE TABLE IF NOT EXISTS test2.student(
Sno INT COMMENT 'student sno',
name STRING COMMENT 'student name',
age INT COMMENT 'student age',
sex STRING COMMENT 'student sex',
score STRUCT<Chinese:FLOAT,Math:FLOAT,English:FLOAT> COMMENT 'student score')
COMMENT 'students information table'
row format delimited fields terminated by ',' 
collection items terminated by '-'
TBLPROPERTIES ('creator'='Floret','date'='2020-11-16');
load data local inpath '/home/student.txt'
overwrite into table student;
create index student_index on table student(Sno)
as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'
with deferred rebuild
IN TABLE student_index_table;
drop index if exists student_index on student;
"
#********* End *********#

评测

Ending!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

在这里插入图片描述

注:
人生在勤,不索何获。

### Hive DDL 操作教程 #### 1. 数据库操作Hive中,可以执行多种数据库级别的DDL操作。以下是常见的数据库操作命令: - **创建数据库** 使用 `CREATE DATABASE` 命令创建一个新的数据库,并可附加条件如检查是否存在以及添加注释或属性[^5]。 ```sql CREATE DATABASE IF NOT EXISTS mydb COMMENT 'This is a test database'; ``` - **查看数据库详情** 可以使用 `DESCRIBE DATABASE EXTENDED` 查看数据库的详细信息,包括路径和其他元数据[^1]。 - **删除数据库** 删除数据库时需注意是否强制删除关联,默认情况下会提示错误以防误删。 ```sql DROP DATABASE IF EXISTS mydb CASCADE; ``` #### 2. 操作 ##### 创建 Hive支持两种类型的——管理(内部)和外部。两者的区别在于数据文件的存储方式及其生命周期管理。 - **创建管理** 管理中的数据由Hive完全控制,当删除时其对应的数据也会被清除。 ```sql CREATE TABLE managed_table (id INT, name STRING); ``` - **创建外部** 外部指向已存在于HDFS上的数据,在这种模式下即使删除也不会影响底层数据文件。 ```sql CREATE EXTERNAL TABLE external_table (id INT, name STRING) LOCATION '/path/to/data/'; ALTER TABLE external_table SET TBLPROPERTIES ('EXTERNAL'='TRUE'); ``` - **字段类型与分隔符设定** 定义结构的同时还可以指定字段间使用的分隔符。 ```sql CREATE TABLE delimited_table ( id INT, name STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; ``` - **基于查询结果创建新** 利用子查询的结果快速构建一张新的格。 ```sql CREATE TABLE new_table AS SELECT * FROM existing_table WHERE condition; ``` - **复制现有结构而不导入数据** 如果仅想拷贝架构而无需实际迁移任何记录,则采用如下语句。 ```sql CREATE TABLE like_table LIKE original_table; ``` ##### 修改 随着业务需求的变化可能需要调整已有的设计方案。 - **更改名** 对于简单更名情况可以直接应用ALTER指令完成重命名过程。 ```sql ALTER TABLE old_name RENAME TO new_name; ``` - **增减列项** 添加额外的新字段或者更新既有字段定义均可以通过此方法实现。 ```sql -- Add column example ALTER TABLE table_name ADD COLUMNS (new_column STRING); -- Change column type or position ALTER TABLE table_name CHANGE COLUMN col_old_name col_new_name NEW_TYPE; ``` ##### 清空及销毁 有时为了释放资源可能会考虑清理整个的内容或者是彻底移除该对象本身。 - **清空内容** 此动作保留原始结构只去除所有行级资料[^3]。 ```sql TRUNCATE TABLE table_name; ``` - **删除整张** 需要特别留意的是对于外置型态而言仅仅消除逻辑层面上的信息并不会同步处理物理层面的实际档案。 ```sql DROP TABLE IF EXISTS table_name; ``` #### 3. 特殊特性:分区与分桶 这些高级选项有助于优化大规模数据分析性能现。 - **分区** 将大尺寸单体分割成若干个小部分以便加速检索速度。 ```sql CREATE TABLE partitioned_table ( id INT, value DOUBLE ) PARTITIONED BY (year INT, month INT); ``` - **分桶** 提供进一步细化粒度的能力从而达到更好的压缩效果降低I/O消耗成本[^4]。 ```sql CREATE TABLE bucketed_table ( id INT, name STRING ) CLUSTERED BY (id) INTO 4 BUCKETS; ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

发芽ing的小啊呜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值