HiveQL基本操作整理

1. 创建操作

1.1 创建表

CREATE TABLE pokes (foo INT, bar STRING);

1.2 基于现有的表结构创建一个新表

create table new_table like records;

1.3 创建视图:

CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;

1.4 创建外部表:

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 ‘This is the staging page view table‘
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\054‘
STORED AS TEXTFILE
LOCATION ‘<hdfs_location>‘;

1.5 建分区表:

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 fields terminated by ‘\t‘
lines terminated by ‘\n‘;
STORED AS SEQUENCEFILE;

2. 加载数据

hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中。数据一旦导入就不可以修改。

路径支持:

* 相对路径,例如:project/data1

* 绝对路径,例如: /user/hive/project/data1

* 包含模式的完整 URI,例如:hdfs://namenode:9000/user/hive/project/data1

2.1 从本地文件加载数据:

LOAD DATA LOCAL INPATH ‘/home/hadoop/input/ncdc/micro-tab/sample.txt‘ OVERWRITE INTO TABLE records;

2.2 加载分区表数据:

load data local inpath ‘/home/hadoop/input/hive/partitions/file1‘ into table logs partition (dt=‘2001-01-01‘,country=‘GB‘);

3. 查看表结构

3.1 展示所有表:

SHOW TABLES;
SHOW TABLES ‘.*s‘; //按正条件(正则表达式)显示表

3.2 显示表的结构信息

DESCRIBE invites;

3.3 展示表中有多少分区:

show partitions logs;

3.4 显示所有函数:

show functions;

3.5 查看函数用法:

describe function substr;

3.6 查看数组、map、结构

select col1[0],col2[‘b‘],col3.c from complex;

3.7 查看hive为某个查询使用多少个MapReduce作业

Explain SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

3.8 查看视图详细信息:

DESCRIBE EXTENDED valid_records;

4. 更新操作

4.1 更新表的名称:

ALTER TABLE source RENAME TO target;

4.2 添加、更新一列

ALTER TABLE invites ADD|REPLACE COLUMNS (new_col2 INT COMMENT ‘a comment‘);

4.3 增加、删除分区

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,...

4.4 增加表的元数据信息

ALTER TABLE table_name SET TBLPROPERTIES table_properties table_properties:
     :[property_name = property_value…..]

4.5 改变表文件格式与组织

ALTER TABLE table_name SET FILEFORMAT file_format
ALTER TABLE table_name CLUSTERED BY(userid) SORTED BY(viewTime) INTO num_buckets BUCKETS

5. 删除操作

5.1 删除表:

DROP TABLE records;

5.2 删除表中数据,但要保持表的结构定义

dfs -rmr /user/hive/warehouse/records;

5.3 删除视图

DROP VIEW view_name

6. 连接操作

6.1 内连接:

SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

6.2 外连接:

SELECT sales.*, things.* FROM sales LEFT OUTER JOIN things ON (sales.id = things.id);
SELECT sales.*, things.* FROM sales RIGHT OUTER JOIN things ON (sales.id = things.id);
SELECT sales.*, things.* FROM sales FULL OUTER JOIN things ON (sales.id = things.id);

6.3 in查询:Hive不支持,但可以使用LEFT SEMI JOIN

SELECT * FROM things LEFT SEMI JOIN sales ON (sales.id = things.id);

6.4 Map连接:Hive可以把较小的表放入每个Mapper的内存来执行连接操作

SELECT /*+ MAPJOIN(things) */ sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

INSERT OVERWRITE TABLE ..SELECT:新表预先存在

FROM records2
INSERT OVERWRITE TABLE stations_by_year SELECT year, COUNT(DISTINCT station) GROUP BY year
INSERT OVERWRITE TABLE records_by_year SELECT year, COUNT(1) GROUP BY year
INSERT OVERWRITE TABLE good_records_by_year SELECT year, COUNT(1) WHERE temperature != 9999 AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9) GROUP BY year;  

CREATE TABLE … AS SELECT:新表表预先不存在

CREATE TABLE target AS SELECT col1,col2 FROM source;

7. 插入数据

7.1 基本模式

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

7.2 多插入模式

FROM from_statement
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1
[INSERT OVERWRITE TABLE tablename2 [PARTITION ...] select_statement2] ...

7.3 自动分区模式

INSERT OVERWRITE TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement

8. 导出数据到HDFS

数据写入文件系统时进行文本序列化,且每列用^A 来区分,\n换行

INSERT OVERWRITE [LOCAL] DIRECTORY directory1 SELECT ... FROM ...
        FROM from_statement
        INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1
     [INSERT OVERWRITE [LOCAL] DIRECTORY directory2 select_statement2]
时间: 05-11

HiveQL基本操作整理的相关文章

Mysql基本操作整理

1.登录数据库 格式: mysql -h主机地址 -u用户名 -p用户密码 –P端口 –D数据库 –e “SQL 内容”>mysql -uroot -p 数据库名称~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.修改密码 格式:mysqladmin -u用户名 -p旧密码 password 新密码Mysqladmin  -uroot  -password ab12注:因为开始时root没有密码,所以-p旧密码一项就可以省略了.例2:再将root的密码改为djg345.my

ceph基本操作整理

一.ceph更换硬盘流程: 1.删除OSD: a.停止osd  daemon stop  ceph-osd  id=X  b.Mark osd out ceph osd out osd.X c.osd  remove from  crushmap ceph  osd remove osd.X d.Delete ceph anthentication keys ceph  auth del osd.X e.remove  osd from ceph cluster ceph  osd rm  os

JSON数组,JSON对象,数组的区别与基本操作整理

JSON 语法规则 JSON 语法是 javascript 对象表示语法的子集. 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数据的书写格式是:名称/值对. 名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开: "firstName":"John" JSON 值 JSON 值可以是: 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(

spark 基本操作整理

关于spark 的详细操作请参照spark官网 scala 版本:2.11.8 1.添加spark maven依赖,如需访问hdfs,则添加hdfs依赖 groupId = org.apache.spark artifactId = spark-core_2.11 version = 2.3.2 groupId = org.apache.hadoop artifactId = hadoop-client version = <your-hdfs-version> 2.sparkcontext

JavaScript 数组基本操作

简介 数组操作无论是在JavaScript中还是在其他语言中都是很常见.经常会用到的,现在我把JavaScript 数组基本操作整理一下,供大家参考学习.里边包含我自己的见解以及案例,希望能够帮助大家,使用的是ECMAScript 5. 字符串与数组转换 有时候我们需要把字符串进行转换为数组,则需要split方法,把数组转换为字符串则需要join方法 var star="js,php,java,c++"; star=star.split(","); console.

在CentOS7.5上安装MySQL(5.7版本),掌握MySQL基本操作。

当今主流数据库概略: 在数据库技术日益发展的今天,主流数据库代表着成熟的数据库技术.了解常用数据库,就能知道数据库技术发展的程度,以及未来的大体方向. 数据库分关系型数据库和非关系型数据库. 关系型数据库:基于关系模型的数据库系统,是关系模型应用到数据库领域的实例化.它的基本概念来自于关系模型.市场上主流商业关系型数据库有SQL Server.Oracle.IBM DB2.MySQL等 非关系型数据库:也称作NoSQL(Not Only SQL),存储数据不以关系模型为依据,不需要固定的表格式.

Linux 命令整理 —— 基本操作

1.ls 目录列举(dir) 一般我们这么写: ls 列举当前目录的所有文件,如果文件很多的话,这么看很复杂.我们可以加关键字,例如我们要看包含xml的全部文件. ls *xml* 如果这个时候,我们想要看到这些文件的所有者信息可以这么写: ls -la 2.cd 目录切换 和其他目录切换命令一样,没有差别. cd a 切换到a目录. 3.chown 改变文件(文件夹)的拥有者 上文通过ls我们看到了一堆文件,可能有的文件我们不能操作,这时候需要root账户执行chown命令改变文件所属,可以这

MySql 基本操作语句整理

数据库 DATABASE: 创建 CREATTE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name . 删除: DROP {DATABASE | SCHEMA} [IF EXISTS] db_name; 显示: SHOW{ DATABASES| SCHEMAS} [LIKE 'pattern'|WHERE expr]; 选择: USE database_name : 数据表 T

C#:MapControl基本操作代码整理

来自:http://www.cnblogs.com/shenchao/p/3591312.html using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Windows.Forms; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.esriSystem; using ESRI.