非关系型数据库语言,语言逻辑与MySQL大致相似,但是要求能够更加严格一点。
hive> ALTER TABLE student1 ADD COLUMNS
> (address STRING,grade STRING);
在添加属性的时候,需要添加columns关键字(列)
•ROW FORMAT DELIMITED 行格式分隔
如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE
Distinct:查询的数据去重
LOAD DATA LOCAL INPATH '/home/hadoop/djt/user.txt' INTO TABLE group_test;
从指定位置向指定表中导入数据(保留源文件)
ORDER BY 会对输入做全局排序,因此只有一个 Reduce(多个 Reduce 无法保证全局有序)会导致当输入规模较大时,需要较长的计算时间。使用 ORDER BY 查询的时候,为了优化查询的速度,使用 hive.mapred.mode 属性。
hive.mapred.mode = nonstrict;(default value/默认值) 默认是不精确的
hive.mapred.mode=strict;
与数据库中 ORDER BY 的区别在于,在 hive.mapred.mode=strict 模式下必须指定limit ,否则执行会报错。
hive> set hive.mapred.mode=strict;
hive> select * from group_test order by uid limit 5;
在设置hive.mapred.mode为精确时,必须添加limit限制条件,否则会报错
CLUSTER BY 查询
cluster by 除了具有 distribute by 的功能外还兼具 sort by 的功能。
创建索引:
hive> create index user_index on table user(id) as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' with deferred rebuild IN TABLE user_index_table;
创建索引,索引名称为:user_index 在user表,表的user(id)为索引
Hive关键字concat_ws:带着间隔符号的拼接,使用语法:
hive> select concat_ws(‘,’,'abc’,'def’,'gh’) from dual;
输出结果:abc,def,gh
字符串长度:length,字符串翻转:reverse,字符串拼接concat
字符串截取:substring,substr
字符串转大写:upper(string a),ucase(string a)
字符串转小写:lower(string a) ,lcase(string a)
去两侧空格函数:trim(String a)
去左侧空格ltrim 去右侧空格rtrim
个数统计:count 和统计:sum
求平均数:avg
求最大最小值:max,min
复合类型操作;
Map类型:create table map_test as select map( kay,value,kay,value) from student
Struct类型:根据输入的参数构造结构体类型
语法:
hive> create table array_test as select array('jay','liu','gang') from student;
hive> describe array_test;
hive> select array_test from array_test;