Hive建表高阶语句

news/2024/5/20 4:51:56 标签: 大数据, hive, hdfs

CTAS -as select方式建表

CREATE TABLE ctas_employee as SELECT * FROM employee;

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;

创建临时表--temporary

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

表只对当前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

TRUNCATE TABLE employee; 

创建动态分区

---动态分区需设定属性
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";

动态表插入数据

/*将employeept中的数据导入到employee_dt表中*/
insert into table employee_dt partition (age,gender)
select name, workplace, skills_score, depart_title,gender,agefrom employee2;

查询分区

show partitions employee_dt;

添加分区

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

删除分区

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

修改表(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);

Hive视图(view)

视图:通过隐藏子查询、连接和函数来简化查询的逻辑结构;只保存定义,不存储数据;如果删除或更改基础表,则查询视图将失败;视图是只读的,不能插入或装载数据

创建视图

create view view_name as select statement;

查看视图定义

show create table view_name;

删除视图

drop view_name;

更改视图属性

alter view view_name set tblproperties ('comment' = 'This is a view');

更改视图定义

alter view view_name as select statement;

Hive侧视图(Lateral View)

select name,wps,gender_age.gender, gender_age.age,skill,score,depart,title
from employee
         lateral view explode(workplace) work_place as wps
         lateral view explode(skills_score) sks as skill, score
         lateral view explode(depart_title) ga as depart, title;


http://www.niftyadmin.cn/n/132221.html

相关文章

【Linux】帮助文档查看方法

目录1 Linux帮助文档查看方法1.1 man1.2 内建命令(help)1 Linux帮助文档查看方法 1.1 man man 是 Linux 提供的一个手册&#xff0c;包含了绝大部分的命令、函数使用说明。 该手册分成很多章节&#xff08;section&#xff09;&#xff0c;使用 man 时可以指定不同的章节来浏…

C#开发的OpenRA的游戏主界面怎么样创建5

继续游戏主界面创建的主题, 前面已经介绍到怎么样创建一个OpenRA的帐号显示, 接着下来介绍中间显示新闻的消息窗口,如下图所示: 这个界面看起来比较简单,只有一个下拉按钮显示,但是背后的实现是比较复杂的。 因为它要实现一个对话框的窗口显示,那需要编写的代码和设计思…

3.8多线程

案例一-线程安全的单例模式(面试)是一种设计模式,设计模式针对写代码时的一些常见场景给出一些经典解决方案单例模式的两种典型实现饿汉模式懒汉模式饿汉的单例模式:比较着急去进行创建实例懒汉的单例模式,是不太着急创建实例,,只是在用的时候,才真正创建这个是类对象,也就是.c…

SpringMVC中的拦截器不生效的问题解决以及衍生出的WebMvcConfigurationSupport继承问题思考

文章目录SpringMVC中的拦截器不生效的问题解决WebMvcConfigurationSupport继承问题思考SpringMVC中的拦截器不生效的问题解决 过滤器代码(被Spring扫描并管理)&#xff1a; Component public class StuInterceptor implements HandlerInterceptor {Overridepublic boolean pr…

蓝桥 卷“兔”来袭编程竞赛专场-02破解曾公亮密码 题解

赛题介绍 挑战介绍 曾公亮编撰的《武经总要》中记载了一套严谨的军事通信密码&#xff0c;这也是目前发现我国古代战争中最早使用的军用密码表。将战场上可能常用到的情况&#xff0c;用 40 个短语归纳表示&#xff0c;且每个短语前编有固定的数字代码&#xff0c;这 40 个短…

华为OD机试 - GPU 调度(C 语言解题)【独家】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:GPU 调度…

MacBook安装Golang Oracle数据库驱动程序

Golang连接Oracle 需要安装Oracle Full Client或Instant Client Oracle的Instant Client套件下载地址 #选择Instant Client for macOS (Intel x86)下载包如下: instantclient-basic-macos.x64-19.8.0.0.0dbru.zip instantclient-sdk-macos.x64-19.8.0.0.0dbru.zip instantcli…

imx6 usb增强信号强度

USB信号 参考&#xff1a;官方文档 USB信号完整性取决于许多因素&#xff0c;如电路设计、PCB布局、堆叠和阻抗。每个产品可能彼此不同&#xff0c;因此客户需要微调参数&#xff0c;以获得最佳的信号质量。 测试板已经路由出两个USB端口:一个OTG1&#xff0c;一个主机。每个端…