语法:
1.LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1,partcol2=val2 ...)]
说明:
[LOCAL]
:从操作系统中的一个目录中进行导入,如果不写LOCAL则为hdfs的数据导入
INPATH
:为导入的路径,后面指明文件目录路径,如不指明文件名,则将目录下的所有文件进行导入
[OVERWRITE]
:是否要覆盖表中已经存在的数据
INTO TABLE
:后面跟表名,如果导入的是个分区表,还可以通过PARTITION
指明导入到哪个分区当中
1.SELECT [ALL | DISTINCT] select_expr,select_expr,...
2.FROM table_reference
3.[WHERE where_condition]
4.[GROUP BY col_list]
5.[CLUSTER BY col_list
6. |[DISTRIBUTE BY col_list][SORT BY col_list]
7. |[ORDER BY col_list]]
8.[LIMIT number]
DISTRIBUTE BY
:指定分发器(Partitioner),多Reducer可用
使用where
执行过滤
使用order by
执行排序,要降序操作只需要在后面加上desc
,若想在查询的时候使用列序号,可以执行set hive.groupby.orderby.position.alias=true;
在此状态下就不会开启Map Reduce作业,从Hive0.10.0版本开始支持
配置方式:
set hive.fetch.task.conversion=more;
hive --hiveconf hive.fectch.task.conversion=more
1.--四舍五入
2.select round(45.926,2),round(45.926,1),round(45.926,0),round(45.926,-1),round(45.926,-2);
执行结果:
1.45.93 45.9 46.0 50.0 0.0
1.--向上取整
2.select ceil(45.926);
执行结果:
1.46
1.--向下取整
2.select floor(45.926);
执行结果:
1.45
大小写:
1.select lower('Hello World'),upper('Hello World');
执行结果:
1.hello world HELLO WORLD
字符数:
1.select length('Hello World'),length('你好');
执行结果:
1.11 2
拼加字符串:
1.select concat('Hello',' World')
执行结果:
1.Hello World
求子串:
substr(a,b):从a中,第b位开始取,取右边所有的字符
1.select substr('Hello World',3);
执行结果:
1.llo World
substr(a,b,c):从a中,第b位开始取,取c个字符
1.select substr('Hello World',3,4);
执行结果:
1.llo
去掉前后的空格:trim()
左填充:lpad()
右填充:rpad()
1.select lpad('abcd',10,'*'),rpad('abcd',10,'*');
执行结果:
1.******abcd abcd******
1.select size(map(<key,value>,<key,value>...))
1.select cast(1 as float);
coalesce
:从左到右返回第一个不为null的值case...when...
:条件表达式1.CASE a WHEN b THEN c [WHEN d THEN e]*[ELSE f] END
例如:
1.给员工涨工资,总裁1000,经理800,其他400
2.
3.select ename,job.sal,
4. case job when 'PRESIDENT' then sal+1000
5. when 'MANAGER' then sal+800
6. else sal+400
7. end
8.from emp;
当然上面写法是为了好看,在hive把换行符去掉即可
1.select explode(map(1,'Tom',2,'Mary',3,'Mike'));
执行:
1.1 Tom
2.2 Mary
3.3 Mike