hive语法和常用函数Word下载.docx
《hive语法和常用函数Word下载.docx》由会员分享,可在线阅读,更多相关《hive语法和常用函数Word下载.docx(77页珍藏版)》请在冰豆网上搜索。
STRUCT,MAP与ARRAY。
Hive主要有四种数据模型(即表):
(内部)表、外部表、分区表与桶表。
表的元数据保存传统的数据库的表中,当前hive只支持Derby与MySQL数据库。
内部表:
Hive中的表与传统数据库中的表在概念上就是类似的,Hive的每个表都有自己的存储目录,除了外部表外,所有的表数据都存放在配置在hive-site、xml文件的${hive、metastore、warehouse、dir}/table_name目录下。
Java代码
1.CREATE
TABLE
IF
NOT
EXISTS
students(user_no
INT,name
STRING,sex
STRING,
2.
grade
STRING
COMMOT
'
班级'
)COMMONT
学生表'
3.ROW
FORMAT
DELIMITED
4.FIELDS
TERMINATED
BY
'
5.STORE
AS
TEXTFILE;
外部表:
外部表指向已经存在在HadoopHDFS上的数据,除了在删除外部表时只删除元数据而不会删除表数据外,其她与内部表很像。
EXTERNAL
class
SEQUENCEFILE
6.LOCATION
/usr/test/data/students、txt'
;
分区表:
分区表的每一个分区都对应数据库中相应分区列的一个索引,但就是其组织方式与传统的关系型数据库不同。
在Hive中,分区表的每一个分区都对应表下的一个目录,所有的分区的数据都存储在对应的目录中。
比如说,分区表partitinTable有包含nation(国家)、ds(日期)与city(城市)3个分区,其中nation=china,ds=20130506,city=Shanghai则对应HDFS上的目录为:
/datawarehouse/partitinTable/nation=china/city=Shanghai/ds=20130506/。
3.PARTITIONED
(ds
STRING,country
STRING)
4.ROW
5.FIELDS
6.STORE
SEQUENCEFILE;
分区中定义的变量名不能与表中的列相同。
桶区表:
桶表就就是对指定列进行哈希(hash)计算,然后会根据hash值进行切分数据,将具有不同hash值的数据写到每个桶对应的文件中。
score
SMALLINT
总分'
4.CLUSTERED
BY(user_no)
SORTED
BY(score)
INTO
32
BUCKETS
5.ROW
6.FIELDS
7.STORE
内部表与外部表的主要区别:
1)、内部表创建要2步:
表创建与数据加载,这两个过程可以同步执行。
在数据加载的过程中,数据数据会移动到数据仓库的目录中;
外部表的创建只需要一个步骤,表创建数据加载同时完成,表数据不会移动。
2)、删除内部表时,会将表数据与表的元数据一同删除;
而删除外部表时,紧删除表的元数据而不会删除表数据。
在上一节《深入学习《ProgramingHive》:
Hive的数据模型(表)》中,已经学习过表的定义,接下来接着学习Hive的DDL操作。
复制表结构:
students2
LIKE
students;
查瞧表结构:
1.DESCRIBE
删除表:
1.DROP
创建视图:
Hive中的视图(view)的概念与传统数据库中的表就是相同的,就是只读的,目前还不支持不支持物化视图。
如果在创建试图后,再将基本表中被视图引用的列修改,那么修改后的数据列将不会体现在视图中;
如果基本表被删除或以不兼容的方式被修改,则查询该视图时会失败。
VIEW
view_students
(user_no,name,score)
2.AS
3.SELECT
user_no,name,score
FROM
删除视图:
view_students;
定制表存储方式:
employees(
no
3.
name
4.
salary
FLOAT,
5.
subordinates
ARRAY<
STRING>
6.
deductions
MAP<
STRING,FLOAT>
7.
address
STRUCT<
street:
STRING,district:
STRING,city:
STRING,province:
STRING,ZIP:
8.)
9.ROW
10.FIELDS
\001'
11.COLLECTIN
ITEMS
\002'
12.MAP
KEYS
\003'
13.LINES
\n'
14.STORED
15.INPUTFORMAT
org、linkedin、haivvreo、AvroContainerInputFormat'
16.OUTPUTFORMAT
org、linkedin、haivvreo、AvroContainerOutputFormat'
修改表结构:
1)、重命名表
1.ALTER
table_name
RENAME
TO
new_table_name;
只修改了表名,不会改变表结构与数据存放的位置。
2)、修改列名、类型、位置及注释
test(a
INT,b
STRING,c
FLOAT);
//创建测试表
2.//修改列名
test
CHANGE
a
a2
INT;
4./*将a列的名字改为a2,并将其数据类型改为STRING,然后将之放在b列之后;
修改
*
后的表结构为:
b
INT,a2
FLOAT
*/
7.ALTER
AF