Hive ddl+dml |「掘金日新计划 · 10 月更文挑战」

100 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天

一、本篇笔记重点内容:

  • Hive DDL
  • Hive DML
  • 窗口函数

二、详细知识点介绍:

  1. 启动metastore
  2. 启动hiveserver2
  3. 启动beeline
  4. “-e”不进入 hive 的交互窗口执行 sql 语句
  5. “-f”执行脚本中 sql 语句

DDL

COMMENT:为表和列添加注释。 PARTITIONED BY :创建分区表 CLUSTERED BY :创建分桶表 SORTED BY :不常用,对桶中的一个或多个列另外排序 LOCATION :指定表在 HDFS 上的存储位置。

在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。

修改内部表为外部表: alter table student2 set tblproperties('EXTERNAL'='TRUE'); 区分大小写!

重命名 ALTER TABLE table_name RENAME TO new_table_name

ADD 是代表新增一字段,字段位置在所有列后面(partition 列前) REPLACE 则是表示替换表中所有字段。 在这里插入图片描述

DML

加载数据

  • 本地文件stu.txt opt/module/hive/stu.txt

  • 创建一张表 create table student1(id int,name string) row format delimited fields terminated by '\t';

  • 加载本地文件到hive load data local inpath '/opt/module/hive/stu.txt' into table default.student1;

  • 查询 select * from student1; 在这里插入图片描述 比较运算符 在这里插入图片描述 having 与 where 不同点 (1)where 后面不能写分组函数,而 having 后面可以使用分组函数。 (2)having 只用于 group by 分组统计语句。

where后不能加字段别名,可以加表别名 在这里插入图片描述

外连接 涉及到2个表,分为:主表和从表,要查询的信息主要来⾃于哪个表,谁就是主表。 外连接查询结果为主表中所有记录。如果从表中有和它匹配的,则显⽰匹配的值,这部分相当于内连接查询出来的结果;如果从表中没有和它匹配的,则显示null。 最终:外连接查询结果 = 内连接的结果 + 主表中有的⽽内连接结果中没有的记录。 外连接分为2种: 左外链接:使⽤left join关键字,left join左边的是主表。 右外连接:使⽤right join关键字,right join右边的是主表。

满外连接:全外连接=左外连接+右外连接

Truncate :只能删除管理表,不能删除外部表中数据

多表连接 在这里插入图片描述

笛卡尔积 (1)省略连接条件 (2)连接条件无效 (3)所有表中的所有行互相连接

关于四个排序

全局排序(order by)

多个列排序 按照部门和工资升序排序 hive (default)> select ename, deptno, sal from emp order by deptno, sal; 先按照部门号排,再根据薪水排序

每个 Reduce 内部排序(Sort By) 为每个 reducer 产生一个排序文件。每个 Reducer 内部进行排序。

分区排序

三、引用参考&推荐书目:

  1. www.bilibili.com/video/BV1EZ… 尚硅谷大数据Hive教程(基于hive3.x丨hive3.1.2)