hivesql修改字段类型_Hive SQL语法总结

Hive是一个数据仓库基础的应用工具,在Hadoop中用来处理结构化数据,它架构在Hadoop之上,通过SQL来对数据进行操作,了解SQL的人,学起来毫不费力。

Hive 查询操作过程严格遵守Hadoop MapReduce 的作业执行模型,Hive 将用户的Hive SQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。Hive 并非为联机事务处理而设计,Hive 并不提供实时的查询和基于行级的数据更新操作。Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。

下面我们就为大家总结了一些Hive的常用 SQL语法:

"[ ]"括起来的代表我们可以写也可以不写的语句。

创建数据库:

CREATE DATABASE name;

显示命令:

show tables;show databases;show partitions ;show functions;describe extended table_name dot col_name;

DDL(Data Defination Language):数据库定义语言

建表:

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [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] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path]
  • CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常

  • EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)

  • LIKE 允许用户复制现有的表结构,但是不复制数据

  • COMMENT可以为表与字段增加描述

  • ROW FORMAT

DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]        [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]   | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
  • STORED AS

SEQUENCEFILE            | TEXTFILE            | RCFILE                | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 。

创建简单表:

CREATE TABLE person(name STRING,age INT); 

创建外部表:

CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,     page_url STRING, referrer_url STRING,     ip STRING COMMENT 'IP Address of the User',     country STRING COMMENT 'country of origination') COMMENT '这里写表的描述信息' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054' STORED AS TEXTFILE LOCATION '';

创建分区表:

CREATE TABLE par_table(viewTime INT, userid BIGINT,     page_url STRING, referrer_url STRING,     ip STRING COMMENT 'IP Address of the User') COMMENT 'This is the page view table' PARTITIONED BY(date STRING, pos STRING)ROW FORMAT DELIMITED ‘\t’   FIELDS TERMINATED BY '\n'STORED AS SEQUENCEFILE;

创建分桶表:

CREATE TABLE par_table(viewTime INT, userid BIGINT,     page_url STRING, referrer_url STRING,     ip STRING COMMENT 'IP Address of the User') COMMENT 'This is the page view table' PARTITIONED BY(date STRING, pos STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED ‘\t’   FIELDS TERMINATED BY '\n'STORED AS SEQUENCEFILE;

创建带索引字段的表:

CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (dindex STRING); 

复制一个空表:

CREATE TABLE empty_key_value_storeLIKE key_value_store;

显示所有表:

SHOW TABLES;

按正则表达式显示表:

hive> SHOW TABLES '.*s';

表中添加一个字段:

ALTER TABLE pokes ADD COLUMNS (new_col INT);

添加一个字段并为其添加注释:

hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');

删除列:

hive> ALTER TABLE test REPLACE COLUMNS(id BIGINT, name STRING);

更改表名:

hive> ALTER TABLE events RENAME TO 3koobecaf;

增加、删除分区:

#增加:ALTER TABLE table_name ADD [IF NOT EXISTS] partition_spec [ LOCATION 'location1' ] partition_spec [ LOCATION 'location2' ] ...      partition_spec:  : PARTITION (partition_col = partition_col_value, partition_col = partiton_col_value, ...)#删除:ALTER TABLE table_name DROP partition_spec, partition_spec,...

改变表的文件格式与组织:

ALTER TABLE table_name SET FILEFORMAT file_formatALTER TABLE table_name CLUSTERED BY(userid) SORTED BY(viewTime) INTO num_buckets BUCKETS#这个命令修改了表的物理存储属性

创建和删除视图:

#创建视图:CREATE VIEW [IF NOT EXISTS] view_name [ (column_name [COMMENT column_comment], ...) ][COMMENT view_comment][TBLPROPERTIES (property_name = property_value, ...)] AS SELECT;#删除视图:DROP VIEW view_name;

DML(Data manipulation language):数据操作语言,主要是数据库增删改三种操作,DML包括:INSERT插入、UPDATE更新、DELETE删除。

向数据表内加载文件:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]#load操作只是单纯的复制/移动操作,将数据文件移动到Hive表对应的位置。#加载本地LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;#加载HDFS数据,同时给定分区信息hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

将查询结果插入到Hive表:

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;#多插入模式:FROM from_statementINSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1[INSERT OVERWRITE TABLE tablename2 [PARTITION ...] select_statement2] ...#自动分区模式INSERT OVERWRITE TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement;

将查询结果插入到HDFS文件系统中:

INSERT OVERWRITE [LOCAL] DIRECTORY directory1 SELECT ... FROM ...        FROM from_statement        INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1     [INSERT OVERWRITE [LOCAL] DIRECTORY directory2 select_statement2]

INSERT INTO

INSERT INTO  TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

insert overwrite和insert into的区别:

insert overwrite 会覆盖已经存在的数据,假如原始表使用overwrite 上述的数据,先现将原始表的数据remove,再插入新数据。

insert into 只是简单的插入,不考虑原始表的数据,直接追加到表中。最后表的数据是原始数据和新插入数据。

DQL(data query language)数据查询语言 select操作

SELECT查询结构:

SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference[WHERE where_condition][GROUP BY col_list [HAVING condition]][   CLUSTER BY col_list  | [DISTRIBUTE BY col_list] [SORT BY| ORDER BY col_list]][LIMIT number]
  • 使用ALL和DISTINCT选项区分对重复记录的处理。默认是ALL,表示查询所有记录DISTINCT表示去掉重复的记录

  • Where 条件 类似我们传统SQL的where 条件

  • ORDER BY 全局排序,只有一个Reduce任务

  • SORT BY 只在本机做排序

  • LIMIT限制输出的个数和输出起始位置

将查询数据输出至目录:

hive> INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='';

将查询结果输出至本地目录:

hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT a.* FROM pokes a;

将一个表的结果插入到另一个表:

FROM invites a INSERT OVERWRITE TABLE events SELECT a.bar, count(1) WHERE a.foo > 0 GROUP BY a.bar;INSERT OVERWRITE TABLE events SELECT a.bar, count(1) FROM invites a WHERE a.foo > 0 GROUP BY a.bar;JOINFROM pokes t1 JOIN invites t2 ON (t1.bar = t2.bar) INSERT OVERWRITE TABLE events SELECT t1.bar, t1.foo, t2.foo;

将多表数据插入到同一表中

FROM srcINSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200 and src.key < 300INSERT OVERWRITE LOCAL DIRECTORY '/tmp/dest4.out' SELECT src.value WHERE src.key >= 300;

Hive 只支持等值连接(equality joins)、外连接(outer joins)和(left semi joins)。Hive 不支持所有非等值的连接,因为非等值连接非常难转化到 map/reduce 任务。

  • LEFT,RIGHT和FULL OUTER关键字用于处理join中空记录的情况

  • LEFT SEMI JOIN 是 IN/EXISTS 子查询的一种更高效的实现

  • join 时,每次 map/reduce 任务的逻辑是这样的:reducer 会缓存 join 序列中除了最后一个表的所有表的记录,再通过最后一个表将结果序列化到文件系统

  • 实际应用过程中应尽量使用小表join大表

join查询时应注意的点:

#只支持等值连接SELECT a.* FROM a JOIN b ON (a.id = b.id)SELECT a.* FROM a JOIN b     ON (a.id = b.id AND a.department = b.department)#可以 join 多个表SELECT a.val, b.val, c.val FROM a JOIN b     ON (a.key = b.key1) JOIN c ON (c.key = b.key2)#如果join中多个表的 join key 是同一个,则 join 会被转化为单个 map/reduce 任务

LEFT,RIGHT和FULL OUTER关键字

#左外连接SELECT a.val, b.val FROM a LEFT OUTER JOIN b ON (a.key=b.key)#右外链接SELECT a.val, b.val FROM a RIGHT OUTER JOIN b ON (a.key=b.key)#满外连接SELECT a.val, b.val FROM a FULL OUTER JOIN b ON (a.key=b.key)

LEFT SEMI JOIN关键字

#LEFT SEMI JOIN 的限制是, JOIN 子句中右边的表只能在 ON 子句中设置过滤条件,在 WHERE 子句、SELECT 子句或其他地方过滤都不行SELECT a.key, a.value   FROM a   WHERE a.key in    (SELECT b.key     FROM B);#可以被写为:SELECT a.key, a.val    FROM a LEFT SEMI JOIN b on (a.key = b.key)

UNION 与 UNION ALL

#用来合并多个select的查询结果,需要保证select中字段须一致select_statement UNION ALL select_statement UNION ALL select_statement ...#UNION 和 UNION ALL的区别#UNION只会查询到两个表中不同的数据,相同的部分不会被查出#UNION ALL会把两个表的所有数据都查询出

7f19d469c6cba496b893908e314c9566.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述

简介&#xff1a; 支付宝客户端的动态化技术经历三个阶段&#xff1a;现阶段也就是第三阶段是实体组件部分光栅化的hybrid模式&#xff0c;Cube 就是该模式下的产物。 如标题所述&#xff0c;笔者将持续更新《Cube 技术解读》系列文章。本文为Cube系列首篇文章&#xff0c;后续…

阿里云数字巡展:“云上峰会”背后的秘密武器

简介&#xff1a; 近日&#xff0c;阿里云官网上线了叫做“数字巡展”的新产品&#xff0c;专为各行业在数字化创新提供解决方案。数字巡展&#xff0c;立足于设计创新&#xff0c;融合定制化虚拟空间、沉浸化技术体验、数字化企业营销三大核心能力&#xff0c;通过创意和技术优…

把所有圆圈连接起来的游戏_20个幼儿园体育小游戏教程

1、游戏《木头人》游戏规则&#xff1a;幼儿手拉手围成一个圆圈&#xff0c;边走边念儿歌"我是一个木头人&#xff0c;不会说话不会动&#xff0c;看谁坚持一分钟"念到最后一个字时所有幼儿摆出造型不动。老 师说时间到才能动&#xff0c;游戏反复进行。2、游戏《粘泡…

拒绝双写:巧用Lindorm数据订阅

简介&#xff1a; 本文介绍了双写场景的一致性问题&#xff0c;详细介绍了三种解决方案&#xff0c;并针对DB->Binlog->Kafka方案给出了Lindorm数据订阅的最佳实践 双写问题介绍 双写问题&#xff08;Dual Write Problem&#xff09;是指&#xff1a;需要同时修改两个独…

春节快到了,来写个烟花动效吧

作者 | Eason来源 | 程序员巴士2022虎年大吉&#xff0c;预祝各位小伙伴们新年快乐&#xff0c;这篇文章教大家如何在 Canvas 中实现高性能的烟花粒子特效&#xff0c;通过使用 Canvas BitmapShader GestureDetector技术栈&#xff0c;实现趣味 2D 春节烟花特效页面&#xff…

商用服务器系统比较好,商用服务器操作系统都用哪种

商用服务器操作系统都用哪种 内容精选换一换切换弹性云服务器操作系统。支持弹性云服务器数据盘不变的情况下&#xff0c;使用新镜像重装系统盘。调用该接口后&#xff0c;系统将卸载系统盘&#xff0c;然后使用新镜像重新创建系统盘&#xff0c;并挂载至弹性云服务器&#xff…

边缘使用 K8s 门槛太高?OpenYurt 这个功能帮你快速搭建集群!

简介&#xff1a; 为了降低 OpenYurt 的使用门槛&#xff0c;帮助更多地开发者快速上手 OpenYurt&#xff0c;社区提供了 OpenYurt 易用性工具 yurtctl。该工具致力于屏蔽 OpenYurt 集群创建的复杂性&#xff0c;帮助开发者在本地快速地搭建 OpenYurt 开发测试集群。 OpenYurt…

Effective Java 在工作中的应用总结

简介&#xff1a; 《Effective Java》是一本经典的 Java 学习宝典&#xff0c;值得每位 Java 开发者阅读。笔者将书中和平日工作较密切的知识点做了部分总结。 作者 | 宜秋 来源 | 阿里技术公众号 《Effective Java》是一本经典的 Java 学习宝典&#xff0c;值得每位 Java 开发…

harfbuzz安装位置 linux_最新Ubuntu 20.04 LTS已发布,在Win10中该如何进行安装和使用?...

最近Ubuntu发布最新的20.04 LTS长期支持版本&#xff0c;官方提供为期5年的更新升级、安全修复等服务。国内的优麒麟团队也同步放出了优麒麟20.04 LTS&#xff0c;加入了全新的UKUI 3.0桌面环境。那么如何在微软的Windows系统中安装体验最新的Ubuntu系统呢&#xff1f;实际上相…

如何查看华为服务器配置信息,查看服务器网络配置信息

查看服务器网络配置信息 内容精选换一换ECS的网卡绑定虚拟IP地址后&#xff0c;该虚拟IP地址无法ping通。以下排查思路根据原因的出现概率进行排序&#xff0c;建议您从高频率原因往低频率原因排查&#xff0c;从而帮助您快速找到问题的原因。如果解决完某个可能原因仍未解决问…

通过Kubernetes监控探索应用架构,发现预期外的流量

简介&#xff1a; Kubernetes 监控立足于应用监控之下的 Kubernetes 容器界面和底层操作系统&#xff0c;是 Kubernetes 集群软件栈端到端可观测性的一体化解决方案&#xff0c;在 Kubernetes 监控中可以同时看到关联的所有层的观测数据。我们希望通过 Kubernetes 监控的一系列…

追踪 Kubernetes 中的网络流量

作者 | Addo Zhang来源 | 云原生指北译者注&#xff1a;这篇文章很全面的罗列出了 Kubernetes 中涉及的网络知识&#xff0c;从 Linux 内核的网络内容&#xff0c;到容器、Kubernetes&#xff0c;一一进行了详细的说明。文章篇幅有点长&#xff0c;不得不说&#xff0c;网络是很…

Go 语言网络库 getty 的那些事

简介&#xff1a; Getty 维护团队不追求无意义的 benchmark 数据&#xff0c;不做无意义的炫技式优化&#xff0c;只根据生产环境需求来进行自身改进。只要维护团队在&#xff0c;Getty 稳定性和性能定会越来越优秀。 个人从事互联网基础架构系统研发十年余&#xff0c;包括我…

std中稳定排序算法_源代码库已开放 | 哈工大硕士生用 Python 实现了 11 种经典数据降维算法...

转自&#xff1a;AI开发者网上关于各种降维算法的资料参差不齐&#xff0c;同时大部分不提供源代码。这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法&#xff0c;包括&#xff1a;PCA、LDA、MDS、LLE、TSNE 等&#xff0c;并附有相关资料、展…

曲师大教务系统服务器,曲师大教务处信息门户入口地址

为了规范财务行为&#xff0c;加强财务管理&#xff0c;提高代管经费使用效益&#xff0c;提高项目建设质量&#xff0c;根据上级和学校有关财务规定&#xff0c;结合我校实际情况&#xff0c;特制定本办法。一、教务处代管的项目经费品牌特色专业建设经费、精品课程建设经费、…

云网管—云上构建网络自动化体系

简介&#xff1a; 云网管是基于阿里云网络多年技术和经验沉淀打造的云上智能网络管理运维平台&#xff0c;提供企业网络全生命周期管理运维的能力&#xff0c;让部署更快捷、运维更高效、网络更透明。 1.背景 云网管是基于阿里云网络多年技术和经验沉淀打造的云上智能网络管理…

【C++练级之路】【Lv.5】动态内存管理(都2023年了,不会有人还不知道new吧?)

目录 一、C/C内存分布二、new和delete的使用方式2.1 C语言内存管理2.2 C内存管理2.2.1 new和delete操作内置类型2.2.2 new和delete操作自定义类型 三、new和delete的底层原理3.1 operator new与operator delete函数3.2 原理总结3.2.1 内置类型3.2.2 自定义类型 四、定位new表达…

开工啦~Spring 完美导入 IDEA

作者 | 阿Q来源 | 阿Q说代码有小伙伴私信我说想要研究下Spring的源码&#xff0c;想让我出一期教程来实现IDEA导入Spring源码&#xff0c;今天它来了~版本 &#xff1a;IDEA 2020.2.3 &#xff1b;Spring 5.0.x &#xff1b;gradle 4.4.1 &#xff1b;先从github上面把 spring …

基于MaxCompute分布式Python能力的大规模数据科学分析

简介&#xff1a; 如何利用云上分布式 Python 加速数据科学。 如果你熟悉 numpy、pandas 或者 sklearn 这样的数据科学技术栈&#xff0c;同时又受限于平台的计算性能无法处理&#xff0c;本文介绍的 MaxCompute 可以让您利用并行和分布式技术来加速数据科学。也就是说只要会用…

5新建没有头文件_开垦绿茵版图迎来“真金白银”保障,新建足球场地可获财政补贴...

本周二&#xff0c;国家发改委、体育总局、国务院足球改革发展部际联席会议办公室共同制定了《全国社会足球场地设施建设专项行动实施方案(试行)》。《方案》指出&#xff0c;对新建11人制标准足球场&#xff0c;每个球场补助200万元&#xff1b;对新建5人制、7人制(8人制)足球…