Java essay Java essay
首页
  • Java基础
  • Java进阶
  • 设计模式
  • 多线程
  • Java你不知道的小事
  • Spring初识
  • Spring进阶
  • SpringBoot基础
  • SpringBoot进阶
  • 什么是微服务
  • SpringCloud全家桶
  • Dubbo
  • SpringCloud Alibaba
  • Vue
  • 小程序
  • 博客搭建
  • 数据库
  • python
  • 大数据
  • 性能分析优化
  • 中间件
  • 云原生
  • 面试
  • 外卖霸王餐
  • 打工人的带饭生活
  • 30岁我该怎么办
友链
关于我
GitHub (opens new window)

Mr.Fire

全栈工程师
首页
  • Java基础
  • Java进阶
  • 设计模式
  • 多线程
  • Java你不知道的小事
  • Spring初识
  • Spring进阶
  • SpringBoot基础
  • SpringBoot进阶
  • 什么是微服务
  • SpringCloud全家桶
  • Dubbo
  • SpringCloud Alibaba
  • Vue
  • 小程序
  • 博客搭建
  • 数据库
  • python
  • 大数据
  • 性能分析优化
  • 中间件
  • 云原生
  • 面试
  • 外卖霸王餐
  • 打工人的带饭生活
  • 30岁我该怎么办
友链
关于我
GitHub (opens new window)
  • 大数据生态组件及关系
  • Hive常见问题记录
    • 常用函数
    • SQL
  • 大数据
Mr.Fire
2024-04-18
目录

Hive常见问题记录

# 常用函数

  • coalesce ( expression [ ,...n ] ) :返回其参数中第一个非空表达式
  • row_number() over(partition by field order by field) : 每个分组内对行进行排序并编号
  • split(str,exp) : 拆分字符串
  • size(ary) :求数组长度
  • concat_ws( Separator,field [ ,...n ]) :连接字符串的函数
  • collect_list(field) :对某一列进行合并
  • collect_set(field) :对某一列进行合并(去重)
  • get_json_object(str,'$.field') :解析json字符串,获取对应key的value值
  • date_add(timestamp, num) :时间计算,如添加固定天数
  • date_format(timestamp|str,formatStr) :时间格式化
  • from_unixtime(unix_time, format): 将一个时间戳转换为指定的格式
  • unix_timestamp(date[, pattern]):返回日期对应的时间戳

# SQL

  1. 创建表
create external table if not exists my.table_name (
    name String COMMENT ' ',
    path String COMMENT ' ',
    title String COMMENT ' ',
    icon String COMMENT ' ',
    index int COMMENT ' ',
    visible int COMMENT ' '
)
COMMENT  ''
stored as orcfile
location '/warehouse/my.db/table_name';
1
2
3
4
5
6
7
8
9
10
11
  1. 创建临时表
create external table my.table_name stored as orcfile location '/warehouse/my.db/table_name' as
    select ...
1
2
  1. 创建临时视图
ss.sql(sql.format([args])).createOrReplaceTempView("table_name")
1
  1. 删除视图
ss.catalog.dropTempView("table_name")
1
  1. 分区表插入
insert  overwrite table table_name partition(分区字段) ...
1
  1. 查询分区表
select * from table_name where day = '2024-01-01'
1
  1. json字符串解析
  • 正常json字符串
select get_json_object(query, "$.attr") as attr from  table_name where day = '2024-01-01'
1
  • 去掉字符串首尾的引号,替换转义字符
select get_json_object(replace(regexp_replace(query,'("*+)$|^("*+)',''),'\\\\"','"'), '$.attr') as attr from  table_name where day = '2024-01-01'
1
  • 解析json中的数组
  1. explode 炸裂函数: explode函数能够将array及map类型的数据炸开,实现一行变多行

  2. lateral view侧视图: Lateral 也是用来对数组进行列转行的,Lateral View主要解决在select使用UDTF(如explode)做查询的过程中查询只能包含单个UDTF,不能包含其它字段以及多个UDTF的情况(及不能添加额外的select列的问题)

# explode就是将hive一行中复杂的array或者map结构拆分成多行。配合 lateral view一起使用,能够将array或者map结构的数据展开并且添加额外的列。

lateral view explode(from_json(GET_JSON_OBJECT(get_json_object(query, '$.query'), '$.objectInfo'),'ARRAY<STRUCT<objectCode: STRING,objectName: STRING>>'))
1
2
3
最后更新时间: 2024/08/13, 16:59:16
大数据生态组件及关系

← 大数据生态组件及关系

最近更新
01
SuperBuilder
12-29
02
30岁我该怎么办
12-29
03
关于存钱
12-29
更多文章>
Theme by Vdoing | Copyright © 2021-2025 Mr.Fire | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式