赞
踩
hive使用了类似SQL的查询语言HQL,因此容易将hive理解为数据库.其实hive和数据库除了有类似的查询语句之外,并没有其他地方类似.
hive数据类型 java数据类型 长度 例子
tinyint byte 1byte有符号整数 1
smalint short 2byte有符号整数 2
int int 4byte有符号整数 3
bigint long 8byte有符号整数 4
boolean boolean 布尔类型,true或false
float float 单精度浮点数 2.1
double double 双精度浮点数 2.2
string string 字符串 'aaa' "bbb"
timestamp 时间类型
binary 字节数组
hive的原子数据类型是可以进行隐式转换的,类似于java的类型转换,但是不会反向转换,除非使用cast
struct类型 struct{ value1 string,value2 int} map类型 键值对元组集合,键值对是 key1->value1 array类型 数组是一组具有相同类型和名称的变量集合 [value1, value2] create table test( name string, friends array<string>, children map<string, int>, address struct<street:string, city:string> ) row format delimited fields terminated by ',' [列分隔符] collection items terminated by '_' [map struct array 的分隔符] map keys terminated by ':' [map中key value的分隔符] lines terminated by '\n'; [行分隔符] 访问形式: friends[1] children['key'] address.city
创建数据库: create database if not exists db_name;
create database db_name location '/db_aname.db';--指定在hdfs上的路径
查询数据库: show databases;
show databases like 'order_*';
数据库信息: desc database db_name;
desc database extended db_name;
切换数据库: use db_name1;
修改数据库部分参数: alter database db_name set dbproperties('key'='value');
<-(*****!!!慎用!!!****)
删除数据库: drop database db_name; drop database if exists db_name;
如果数据库不为空,使用cascade: drop database db_name cascade;
(*****!!!慎用!!!****)->
建表语句: 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 exists 规避表存在异常 external 创建外部表时使用,和内部表的区别在于,删除外部表时只删除元数据,不删除数据,内部表删除的时候元数据和数据一起被删除 comment 做注释说明 partitioned by 创建分区表,后面跟分区字段名称和类型 clustered by 创建分通表 sorted by 桶内排序,指定排序字段 (1)row format delimited [fields terminated by char] [collection items terminated by char] [map keys terminated by char] [lines terminated by char] 或 (2)serde serde_name [with serdeproperties (property_name=property_value, property_name=property_value, ...)] 用户在建表的时候可以自定义serde或者使用自带的serde,如果没有指定(1),将会使用自带的serde.serde是serialize/deserilize 的简称,目的是用于序列化和反序列化. fields terminated by char : 数据列分隔符 collection items terminated by
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。