内置函数UDF和内置运算符
取随机数rand()
select rand() from t_product;求a的阶乘
factorial(INT a)
select factorial(10) from t_product;求最大值
greatest(T v1, T v2, …)
select greatest(10,123,53,34,1,23,502,120) from t_product;求最小值
least(T v1, T v2, …)
select least(10,123,53,34,1,23,502,120) from t_product;数学常量e
select e() from t_product;数学常量pi
select pi() from t_product;返回当前时间
select current_date from t_product;如果列中有null值,则返回默认值
nvl(T value, T default_value)
select id,nvl(name, ‘无名氏’) from t_product;对于值的不同判断,取不同的值
CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
如果a=b就返回c,a=d就返回e,否则返回f
如CASE 4 WHEN 5 THEN 5 WHEN 4 THEN 4 ELSE 3 END 将返回4
select CASE id WHEN 1 THEN ‘正品’ ELSE ‘山寨’ END,name from t_product;判断某个文件中是否包含某个字符串
in_file(string str, string filename)
select in_file(‘start’,’/home/briup/test’) from t_product;通过某个符号切割字符串
split(string str, string pat)
select split(‘hello,world,briup’, ‘,’) from t_product;截取字符串
substr(string|binary A, int start, int len)
select substr(‘ceo-larry’, 0, 3) from t_product;在某字符串中查找某个子串第一次出现的位置,位置从1开始
instr(string str, string substr)
select instr(‘ceo-larry’, ‘la’) from t_product;将第一个字符串中的,符合第二个字符串的部分,替换成第三个字符串
translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)
select translate(‘hello briup’, ‘briup’, ‘imut’) from t_product;比较两个字符串,不同的字符个数
levenshtein(string A, string B)
select levenshtein(‘hello’, ‘worldd’) from t_product;把array中的字符用某个符号拼接起来
concat_ws(string SEP, array)
select concat_ws(‘#’, split(‘hello,world,briup’, ‘,’)) from t_product;
自定义函数UDF
- 写一个java类extends UDF,定义某个逻辑
- 打成jar包上传到hive所在的节点
- 在hive中创建一个函数,和jar中的自定义类建立关联
- 导入包
add jar /home/hadoop/udf.jar - 建立关联
create temporary function getArea as ‘com.briup.udf.MyUDF’; - 查看自定义函数
show functions; - 使用自定义函数
select id,name,tel,getArea(tel) from t_student_udf;
- 导入包
JDBC连接hive
修改配置文件hdfs-site.xml
1234<property><name>dfs.webhdfs.enabled</name><value>true</value></property>修改配置文件core-site.xml
12345678<property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value></property>
注:以上两个属性的第三位指的是hive所在机器的用户名
- 开启hive服务保持持续运行
hive –service hiveserver2 & - 编写代码测试连接123456789101112131415public class JDBCTest {public static void main(String[] args) throws Exception {Class.forName("org.apache.hive.jdbc.HiveDriver");Connection conn = DriverManager.getConnection("jdbc:hive2://hadoop1:10000/db1803","hadoop","hadoop");System.out.println(conn);Statement stat = conn.createStatement();String hql = "create table t_student_jdbc(id int,name string,tel string)" +" row format delimited" +" fields terminated by ','" +" stored as textfile";stat.execute(hql);stat.close();conn.close();}}
最后更新: 2018年10月08日 18:25