Hive处理数据基本操作流程

Hive数据操作

1. 前置准备

实验环境

  1. Oracle Linux 7.4
  2. Java1.8.0_144
  3. Hadoop2.7.4
  4. Hive2.1.1

数据准备

在这里插入图片描述

2. 表操作

2.1 建表操作

create external table userinfos(
    uname string,
    salary float,
    family ARRAY<STRING>,
    reduces MAP<string,float>,
    address STRUCT<street:string,city:string,state:string,zip:int>
)
row format delimited fields terminated by '\001'
collection items terminated by '\002'
MAP KEYS terminated by '\003'
LINES terminated by '\n'
stored as textfile;

在这里插入图片描述

2.2 导入数据

将本地文件userinfo1.txt中数据导入表userinfo中

load data local inpath '/root/experiment/datas/hive/userinfo1.txt' into table userinfo;

在这里插入图片描述

将本地文件userinfo2.txt中数据导入表userinfo中

load data local inpath '/root/experiment/datas/hive/userinfo2.txt' into table userinfo;

在这里插入图片描述

2.3 查询表

查询指定字段

select uname,salary from userinfo;

查询数组中的值

SELECT uname,family FROM userinfo;

查询集合中的值

SELECT uname,reduces["pension"] FROM userinfo;

在这里插入图片描述

查询结构中的值

SELECT uname,address.city FROM userinfo;

SELECT uname , address.zip FROM userinfo;

在这里插入图片描述

2.3.1 函数查询

算术运算符,使用列值进行计算

SELECT uname,reduces["pension"] +reduces["medical"]+reduces["provident"] FROM userinfo;

数学函数 Round(DOUBLE D)

SELECT uname,round(salary *(1-reduces["pension"] +reduces["medical"]+reduces["provident"])) FROM userinfo;

在这里插入图片描述

2.3.2 聚合函数
-- map端聚合的设置
-- 这个设置可以将顶层的聚合操作放在Map阶段执行,从而减轻清洗阶段数据传输和Reduce阶段的执行时间,提升总体性能。
-- 缺点:该设置会消耗更多的内存。
set hive.map.aggr=true;

SELECT count(*) FROM userinfo;

在这里插入图片描述

2.3.3 表生成函数
SELECT explode(family) AS sub FROM userinfo WHERE uname='John';
2.3.4 条件查询
SELECT * FROM userinfo WHERE uname='John';

在这里插入图片描述

3. 流程总结

Hive常见set的配置设置

设置reduce数量(默认值-1)

set mapred.reduce.tasks=100;

set mapreduce.job.reduces=3;

修改表为内部表

set tblproperties(‘EXTERNAL’=‘FALSE’);

开启分桶表(默认false)

set hive.enforce.bucketing=true;

开启Hive中间传输数据压缩功能

set hive.exec.cmpress.intermediate=true;

开启mapreduce 中map 输出压缩功能

set mapreduce.map.output.compress=true;

开启hive 最终输出数据压缩功能

set hive.exec.compress.output=true;

开启mapreduce 最终输出数据压缩

set mapreduce.output.fileoutputformat.compress=true;

设置mapreduce 最终数据输出压缩为块压缩

set mapreduce.output.fileoutputformat.compress.type=BLOCK;

设置Fetch抓取为more(默认为more)

set hive.fetch.task.conversion=more;

开启本地模式(默认关闭)

文章仅做记录,涉及侵权内容请联系删除

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会撸代码的懒羊羊

打赏5元,买杯咖啡醒,继续创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值