Hive的HQL(2)

简介: Hive基础(1)Hive的HQL(2)1. HQL的数据定义,HQL是一种SQL方言,支持绝大部分SQL-92标准。但是和SQL的差异为:不支持行级别的操作,不支持事务等。HQL的语法接近于MySQL。2. Hive的数据库,本质仅仅是个表的目录或者命名空间。一般用数据库将生产表组织成逻辑组。3. Hive中的表–管理表,创建表时未指定的话为默认为管

Hive基础(1)

Hive的HQL(2)

1. HQL的数据定义,HQL是一种SQL方言,支持绝大部分SQL-92标准。但是和SQL的差异为:不支持行级别的操作,不支持事务等。HQL的语法接近于MySQL。

2. Hive的数据库,本质仅仅是个表的目录或者命名空间。一般用数据库将生产表组织成逻辑组。

3. Hive中的表–管理表,创建表时未指定的话为默认为管理表。当删除管理表时,Hive将删除管理表中的数据和元数据。

CREATE TABLE IF NOT EXISTS test.student (
name    STRING COMMENT 'student name',
age     INT COMMENT 'student age',
cource  ARRAY<STRING>,
body    MAP<STRING,FLOAT>,
address STRUCT<STRING,CITY:STRING,STATE:STRING>)
COMMENT 'the info of student'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TEMINATED BY '\003'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/user/hive/warehouse/test.db/student';
  • COMMENT注释作用
  • ROW FORMAT DELIMITED等指定数据格式和文件存储格式。
  • LOCATION子句指定该表的存储位置,若不写存储在Hive默认的数据仓库目录中。

4. Hive中的表–外部表,当数据需要被多个工具(如Pig、Hive)共享时,创建一个外部表明确数据的所有权,Hive只会删除该表的元数据信息,而不会删除该表的数据。

CREATE EXTERNAL TABLE IF NOT EXISTS test.student(
name STRING COMMENT,
age INT COMMENT,
cource ARRAY<STRING>,
body MAP<STRING,FLOAT>,
address STRUCT<STREET:STRING,CITY:STRING,STATE:STRING>)
LOCATION '/user/test/x'
  • EXTERNAL TABLE 创建一个外部表

5. Hive中的表–分区表(partition),分区表可以进行水平切分,将表数据按照某种规则进行存储。

CREATE TABLE student_info(
student_ID STRING,
name STRING,
age INT,
sex STRING,
father_name STRING,
mother_name STRING)
PARTITIONED BY (province STRING,city STRING);
  • PARTITIONED BY 子句指定表按照学生家庭住址的city和province字段进行分区。
  • /user/hive/warehouse/student_info/province=hebei/city=handan
  • 分区的作用相当和索引类似。
  • Hive安全措施,设置“strict”模式,这样如果针对一个分区表的查询没有对分区进行限制的话,改作业将会被禁止提交。
  • 单独为外部表的分区指定值和存储位置
ALTER TABLE student_info ADD PARTITION (province = hebei,city = handan) LOCATION 'hdfs://master:9000/student/hebei/handan'
  • 外部分区表被删除,数据不会被删除。

6. 删除表 DROP TABLE test 或者 DROP TABLE IF EXISTS test

7. 修改表

  • 表重命名 ALTER TABLE test RENAME TO test2
  • 增加、修改、删除分区
    • 增加分区 ALTER TABLE test ADD PARTITION (x = x1, y = y2) LOCATION ‘/user/test/x1/y1’
    • 修改分区 ALTER TABLE test ADD PARTITION (x = x1, y = y2) SET LOCATION ‘/user/test/x1/y1’
    • 删除分区 ALTER TABLE test ADD DROP PARTITION (x = x1, y = y2)
  • 修改列信息
    ALTER TABLE test
    CHANGE COLUMN id uid INT
    COMMENT ‘the unique id’
    AFTER name;
  • 增加列
    ALTER TABLE test ADD COLUMNS (new_col INT, new_col2 STRING);
  • 删除或者替换列
    ALTER TABLE test REPLACE COLUMNS (new_col INT, new col2 STRING);

8. HQL的数据操作 LOAD DATA

目录
相关文章
|
3月前
|
SQL 关系型数据库 HIVE
Hive中的HQL是什么?请解释其语法和常用操作。
Hive中的HQL是什么?请解释其语法和常用操作。
22 0
|
SQL 存储 负载均衡
工作常用之Hive 调优【四】HQL 语法优化
列裁剪就是在查询时只读取需要的列,分区裁剪就是只读取需要的分区。当列很多或者数据量很大时,如果 select * 或者不指定分区,全列扫描和全表扫描效率都很低。
173 0
工作常用之Hive 调优【四】HQL 语法优化
|
SQL HIVE
hive:用hql来做wordcount
hive:用hql来做wordcount
108 0
|
SQL HIVE
Hive的HQL执行计划
一个Hive查询被转换成一个序列(更多的是一个有向无环图)的阶段。这些阶段可能是映射/还原阶段,甚至可能是进行转移或文件系统操作(如移动和重命名)的阶段
1673 0
|
SQL 存储 分布式计算
|
SQL 分布式计算 Hadoop
Hive的HQL语句及数据倾斜解决方案
[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/51675005 作者: 朱培          ID:sdksdk0 Hive环境的搭建在这里也不重复说了,安装配置可以查看我的这篇文章:http://blog.csdn.net/sdksdk0/article/
1647 0
|
4月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
99 1
|
4月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
77 0
|
6月前
|
SQL 分布式计算 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
73 0
|
6月前
|
SQL Java 大数据
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
221 1