在实习中用到了Hive, 把HiveQL常用到的知识点整理记录一下
1.Hive里的相等 是= 不是 == 如果要比较一个变量 是NULL 应该写 somevar is NULL 而不是somevar = NULL
2.case when 要跟end才能结束
3.进入Linux系统后 输入 hive进入hive模式,指示符变成 hive>
4.hive> show databases;可以显示现在已经有哪些数据仓库了
5.使用数据库是hive> use dw; (dw是数据库名称)
6.进入数据库后 hive>show tables;显示该数据库下所有表
7.想要验证一个正则表达式可以直接在hive模式下select出来做测试,例如:
hive>select split('[2352]','[^0-9+]')[1];
结果是2352
8.hiveQL运行结果想要保存成一个csv文件,demo:
hive -e"
set hive.cli.print.header=true;
select A.debt_id ,hit_data ,expire_datekey ,7days_standard_overdue ,overdue_date_calc_cnt from
(select debt_id,
split(hit_data,'[^0-9+]')[1] as hit_data
from tmp_dw.fact_rule_debt_rule_19 where rule_id = 192 or rule_id=442 ) as A
inner join
(select debt_id,
expire_datekey,
overdue_date_calc_cnt,
(case
when expire_datekey>=20171004 or expire_datekey is NULL then NULL
when overdue_date_calc_cnt > 7 then 1 else 0 end ) as 7days_standard_overdue
from dw.topic_debt_single ) as B
on A.debt_id = B.debt_id
order by expire_datekey desc;
" > /home/me/yuzhi1012/blabla.csv
因为我没有INSERT权限,所以不能INSERT overwrite local dircetory这种写法,只能像上面那样写,默认分隔符是tab 保存文件的文件夹必须已经存在,否则会报错。
tab分隔符保存的文件用python去读的时候分隔符sep='\t'
如果文件夹不存在就先在linux系统中用mkdir命令创建文件夹
9.安装Xshell软件,我安装的是Xshell5,用这个软件连接linux系统进入hive。 在linux模式下输入 sz 文件名 可以直接保存文件到本地