hive小记

Hive介绍

1、Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架

2、Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能

3、Hive处理的数据存储在HDFS,底层实现是MapReduce,执行程序运行在Yarn上

4、当我们提到hive查询时,底层引擎不一定是MapReduce,较流行的引擎有Presto和Spark等

Hive小抄

hdfs文件导表

-- 常规建表
create table if not exists tmp.tmp_uid_table (
    name string comment 'name',
    age bigint comment 'age'
)comment '临时表' 
row format delimited 
fields terminated by ',' 
stored as textfile;

-- csv内容中包含双引号,则下面的相关配置改一下
ROW FORMAT serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
    'separatorChar' = ',',
    'quoteChar' = '"',
    'escapeChar' = '\\'
)
STORED AS TEXTFILE;

-- 导表
load data inpath '/user/liaohuiqiang/tmp_uid.csv' overwrite into table tmp.tmp_uid_table;

服务器拉hive数据

hive -e "set hive.cli.print.header=true;set hive.resultset.use.unique.column.names=false;select * from tmp.tmp_uid_table" > tmp_uid.csv;

可以通过(a|b|c)?+.+来排除某些列,有些引擎不支持(版本低),可以尝试增加配置

set hive.support.quoted.identifiers=none;

distribute by和sort by

-- 常规
select * from table order by time desc limit 50;

-- 优化
select * from (select * from table distribute by time sort by time desc limit 50 ) t order by time desc limit 50;

一些函数

get_json_object(字段名, '$.key名')
substring_index(源字符串, 分割字符串, 取前几段)
trunc("${day}",'MM') -- 每个月1号
array_contains(array, value)
concat_ws(sort_array(collect_list(字段)))

null操作的返回值

not null返回的是null
null = 'CN'  返回的是null
null and/or/= null 返回的是null

null and false 返回的是false
null and true 返回的是null

null or false 返回的是null
null or true 返回的是true

使用较少的语法

alter table tmp.old rename to tmp.new;

ALTER TABLE tmp.table change col_old col_new bigint comment ""; -- double改不成bigint

posted @   PilgrimHui  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示