HIVE的create table的官方详细文档请参看:http://wiki.apache.org/hadoop/Hive/LanguageManual
本文根据官方文档提供的例子,通过实践较详细地介绍create table的功能。
由于本人也是新手,深入的功能没有涉猎,请大牛们帮忙补充。谢谢!
常用的建表语句的元素如上所示:
HIVE支持的数据类型(data TYPE)
1. primitive_type
TINYINT --1字节整型
SMALLINT --2字节整型
INT --4字节整型
BIGINT --8字节整型
BOOLEAN --布尔类型(true/false)
FLOAT --单精度浮点型
DOUBLE --双精度浮点型
STRING --字符串类型
2. array_type
--数组数据可以是HIVE支持的所有类型
ARRAY<data_type>
3. map_type
--key只能是私有类型(primitive_type),value可以是所有类型数据
MAP<primitive_type, data_type>
4. struct_type
--可支持HIVE的所有类型
STRUCT<col_name : data_type [COMMENT col_comment], ...>
基本的建表语句和comment不再介绍,和ORACLE基本相似。
如下介绍HQL和ORACLE SQL使用方式不同的部分。
------------------------------------------------------------------------------
和ORACLE基本类似,用dt和country两个字段作为分区键做分区表。
------------------------------------------------------------------------------
把一个分区的数据以userid打散到32个桶中,桶中的数据以viewTime降序排序。
此目的:1.取样,可以取N/32的数据做采样
2.并行,提升效率
------------------------------------------------------------------------------
HIVE的记录的分隔符可以自己指定。如上指定列之间的分隔符为’1’,ARRAY类型数据的分隔符为’2’,MAP类型数据分隔符为’3’,行(记录)的分隔符为’4’。
------------------------------------------------------------------------------
数据存储要选择序列化文件格式对数据做压缩,减少存储,提升效率。如果是从本地文件LOAD数据到HIVE的数据表,那么用STORED AS TEXTFILE。