当前位置: 首页 > news >正文

HIVE 基础(三)

目录

建表语句

表数据

Hive建表高阶语句 - CTAS and WITH

CTAS – as select方式建表

CTE (CTAS with Common Table Expression)

LIKE

创建临时表

清空表数据

修改表(Alter针对元数据)

改名

修正表文件格式

修改列名

添加列

替换列

动态分区

使用动态分区需设定属性

建表语句

 动态分区插入数据

查询分区

 添加分区

删除分区


建表语句

create table if not exists employee
(name         string,workplace    array<string>,gender       string,age          int,skills_score map<string,int>,depart_title map<string,string>
) row format delimited fields terminated by '|'collection items terminated by ','map keys terminated by ':'lines terminated by '\n';

表数据

Michael|Montreal,Toronto|Male|30|DB:80|Product:Developer Lead
Will|Montreal|Male|35|Perl:85|Product:Lead,Test:Lead
Shelley|New York|Female|27|Python:80|Test:Lead,COE:Architect
Lucy|Vancouver|Female|57|Sales:89,HR:94|Sales:Lead

Hive建表高阶语句 - CTAS and WITH

CTAS – as select方式建表

CREATE TABLE ctas_employee as SELECT * FROM employee;

CTAS不能创建partition, external, bucket table

CTE (CTAS with Common Table Expression)

CREATE TABLE cte_employee AS
WITH
r1 AS  (SELECT name FROM r2 WHERE name = 'Michael'),
r2 AS  (SELECT name FROM employee WHERE gender= 'Male'),
r3 AS  (SELECT name FROM employee  WHERE gender = 'Female')
SELECT * FROM r1 UNION ALL SELECT * FROM r3;

LIKE

CREATE TABLE employee_like LIKE employee;

创建临时表

临时表是应用程序自动管理在复杂查询期间生成的中间数据的方法

表只对当前session有效,session退出后自动删除

表空间位于/tmp/hive-<user_name>(安全考虑)

如果创建的临时表表名已存在,实际用的是临时表

CREATE TEMPORARY TABLE tmp_table_name1 (c1 string);

CREATE TEMPORARY TABLE tmp_table_name2 AS..

CREATE TEMPORARY TABLE tmp_table_name3 LIKE..

清空表数据

TRUNCATE TABLE employee; 

修改表(Alter针对元数据)

改名

ALTER TABLE employee RENAME TO new_employee;

修正表文件格式

ALTER TABLE employee SET FILEFORMAT RCFILE; 

修改列名

ALTER TABLE employee CHANGE name  employee_name STRING; 

添加列

ALTER TABLE employee ADD COLUMNS (work string);

替换列

ALTER TABLE employee REPLACE COLUMNS (name string);

创建分区

动态分区

使用动态分区需设定属性

set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nonstrict;

建表语句

create table employee_dt(name         string,workplace    array<string>,skills_score map<string,int>,depart_title map<string,string>
) partitioned by (gender string,age int )row format delimited fields terminated by ','collection items terminated by '-'map keys terminated by ':'lines terminated by "\n";

 动态分区插入数据

insert into table employee_dt partition (gender,age)
select name, workplace, skills_score, depart_title, gender, age
from employee2;

查询分区

show partitions employee_dt;

 添加分区

alter table employee_dtadd partition (gender = "Male",age = 28);

 

删除分区

alter table employee_dtdrop partition (gender = "Male",age = 28);

http://www.lryc.cn/news/14901.html

相关文章:

  • redis-cluster集群搭建
  • 【C语言】可变参数列表va_list
  • CentOS7.6 MySQL8安装
  • 安装Tomcat的步骤?
  • Redis之分布式锁
  • 2022年中国前10电商GMV总结
  • ES6新增扩展:字符串-数值-数组-函数-对象
  • python中import原理
  • 《Qt6开发及实例》6-4 显示SVG格式图片
  • OpenGL ES 绘制一张图片
  • Python 之 Pandas DataFrame 数据类型的行操作和常用属性和方法汇总
  • MacOS下载钉钉直播回放视频的Python最新解决方案
  • 2023年测试人跳槽新功略,涨薪10K+
  • RabbitMQ之Work Queues
  • CRM哪家好?这5个CRM管理系统很好用!
  • 国内ce认证机构有哪些 国内十大CE认证机构排名 做ce认证的公司推荐
  • 多If函数封装的策略
  • 238. 银河英雄传说
  • centos7 开机自启动自定义脚本
  • 【Linux】动静态库的制作
  • 数据备份学习笔记2
  • webRTC
  • 用Python搓一个黑洞
  • Spring MVC常用功能及注解
  • shell 编程
  • Leetcode.1401 圆和矩形是否有重叠
  • CHAPTER 3 Web Server - httpd配置(二)
  • VSCode 连接 SSH 服务器
  • 如何选择靠谱的插画培训课程
  • 剑指 Offer 28. 对称的二叉树