hive常用函数及优化
发布网友
发布时间:2024-10-04 06:34
我来回答
共1个回答
热心网友
时间:2024-12-01 09:25
常用函数
数学函数
1. round(double a, int d): 四舍五入
2. floor(double a): 向下舍入最接近的整数
3. ceil(double a): 向上舍入最接近的整数
4. rand(): 返回大于或等于0且小于1的平均分布随机数
5. abs(double a): 取绝对值
6. positive(int a) 或 positive(double a): 返回A的值
类型转换函数
1. cast(expr as): 将字符转换为整数,如:cast(’1’ as bigint)
日期函数
1. from_unixtime(bigint unixtime[, string format]): 返回时间戳格式化为特定格式的日期
2. unix_timestamp(): 返回Unix时间戳(从’1970-01-01 00:00:00’到现在的UTC秒数)
3. to_date(string timestamp): 返回时间的年月日
4. year、month、day、hour、minute(string date)、second(string date)
5. datediff(string enddate, string startdate): 返回两个日期之差
6. date_add(string startdate, int days): 给定时间基础上加上指定的时间段
7. date_sub(string startdate, int days): 给定时间基础上减去指定的时间段
条件函数
1. if(boolean testCondition, T valueTrue, T valueFalseOrNull): 判断条件并返回相应值
2. COALESCE(T v1, T v2, ...): 返回非NULL的值
3. CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END: 条件判断并返回结果
4. CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END: 条件判断并返回结果
字符函数
1. length(string A): 返回字符串长度
2. concat(string A, string B...): 连接字符串
3. substr(string A, int start): 从指定位置获取子字符串
4. substr(string A, int start, int len): 从指定位置获取指定长度的子字符串
5. upper(string A): 转换为大写
6. lower(string A): 转换为小写
7. trim(string A): 删除字符串两端空格
8. ltrim(string A): 删除字符串左边空格
9. rtrim(string A): 删除字符串右边空格
10. regexp_replace(string A, string B, string C): 替换字符串中的匹配项
11. regexp_extract(string subject, string pattern, int index): 通过下标获取正则表达式匹配部分
12. get_json_object(string json_string, string path)
13. space(int n): 返回指定数量的空格
14. repeat(string str, int n): 重复字符串
15. ascii(string str): 返回字符串首字符的数字值
16. lpad(string str, int len, string pad): 左填充字符串
17. rpad(string str, int len, string pad): 右填充字符串
18. split(string str, string pat): 按分隔符分割字符串
19. find_in_set(string str, string strList): 查找字符串在列表中的位置
内置的聚合函数
1. count(*)、count(expr)、count(DISTINCT expr): 计数
2. sum(col)、sum(DISTINCT col): 求和
3. avg(col)、avg(DISTINCT col): 求平均值
4. min(col): 最小值
5. max(col): 最大值
6. collect_set(col): 无重复记录集合
优化
1. 使用explain命令查看执行计划,优化慢查询。
2. 减少中间数据依赖,提前过滤数据。
3. 避免使用map join,尤其对于大表和小表的连接。
4. 将union all替换为join操作,减少中间结果的膨胀。
5. 大数据量下,使用count、sum、distinct时,采用先去重再统计的方式。
6. 合并小文件,提高处理效率。
7. 使用sort by进行部分排序,提高效率。
8. 实现动态分区,根据输入key自动输出到不同目录。
9. 避免数据倾斜,监控执行时间和任务状态。
10. 调整参数设置,优化动态分区和数据倾斜问题。