hive、hbase、mysql数据传输,hive优化实践(一)

本文介绍了Hive的优化实践,包括数据预处理、Hive到MySQL的数据传输,以及Hive到Hbase的转换。讨论了如何创建外部表、使用临时表优化查询速度,以及通过调整mapred参数来减少数据倾斜。同时,文章提到了使用较大数据集进行优化的准备,如分表和JVM重用等策略。
摘要由CSDN通过智能技术生成

此次实践缘由

hive自去年学习后,就一直放着少有使用了,前几天接到面试,说hive这块,让再多学习学习。
所以有了这次实践,复习一把。
主要是想做些优化,以及尝试模拟出数据倾斜并解决倾斜的问题

关于实验

实验的前半部分大部分参考的林子雨实验室的案例
林博士团队的案例,确实讲得很详细,
关于这一部分,我在走一遍流程的前提下,提炼下要素,并对原案例进行一些更深入的观察。这些内容大都使用黄色背景高亮

我的重心是,hive做mapreduce工作这一块的优化,以及尝试模拟出数据倾斜并解决倾斜的问题。

hive、hbase、mysql数据传输

这部分,大都来自林子雨实验室

关于集群:Cloudera CDH5.13.2,搭建过程可参考此文
这里写图片描述

数据集下载https://pan.baidu.com/s/1nuOSo7B
【说句题外话,用了一年多的破解版网盘,我欠百度网盘一个会员。。。等秋招顺利拿了offer】

数据集预览

mkdir -p /home/guest/bigdatacase/dataset

scp ~/elk/user.zip user@your_remote_ipaddress:/home/guest/bigdatacase/dataset

unzip /home/guest/bigdatacase/dataset/user.zip

有两个文件:raw_user.csv和small_user.csv。

head /usr/local/bigdatacase/dataset

这里写图片描述

每行记录都包含5个字段,数据集中的字段及其含义如下:

user_id (用户id)
item_id (商品id)
behaviour_type (包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4)
user_geohash (用户地理位置哈希值,有些记录中没有这个字段值,后面用脚本做数据预处理时把这个字段全部删除)
item_category (商品分类)
time (该记录产生时间)

删除csv表头如果是更复杂的,hive自定义UDF处理可参考以前这篇文章
sed -i '1d' small_user.csv

数据预处理

为每行记录增加一个id字段(让记录具有唯一性)、增加一个省份字段(用来后续进行可视化分析),并且丢弃user_geohash字段(后面分析不需要这个字段)

脚本如下

下面的代码的基本形式是: awk -F “,” ‘处理逻辑’ $infile > $outfile
#!/bin/bash
infile=$1
outfile=$2
#最后的$infile > $outfile必须跟在}’这两个字符的后面
awk -F "," 'BEGIN{
        srand();
        id=0;
        Province[0]="山东";Province[1]="山西";Province[2]="河南";Province[3]="河北";Province[4]="陕西";Province[5]="内蒙古";Province[6]="上海市";
        Province[7]="北京市";Province[8]="重庆市";Province[9]="天津市";Province[10]="福建";Province[11]="广东";Province[12]="广西";Province[13]="云南"; 
        Province[14]="浙江";Province[15]="贵州";Province[16]="新疆";Province[17]="西藏";Province[18]="江西";Province[19]="湖南";Province[20]="湖北";
        Province[21]="黑龙江";Province[22]="吉林";Province[23]="辽宁"; Province[24]="江苏";Province[25]="甘肃";Province[26]="青海";Province[27]="四川";
        Province[28]="安徽"; Province[29]="宁夏";Province[30]="海南";Province[31]="香港";Province[32]=
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值