基于hive的大数据量的优化处理实例

最近在做一个项目时遇到一个问题,是关于大数据量的数据,具体为一个800亿的轻度汇总数据,去关联一个7亿左右的另一个轻度汇总数据。

主要遇到的问题有:

1,800亿的轻度汇总数据读写困难,耗费时间、资源大;

2,两表进行关联处理数据计算慢。

背景:(完全假设来说)

A表是以用户、城市维度的出现次数数据,字段主要有uid、city_id,cnt

B表是以用户、城市维度的出现次数标准数据,字段主要有uid、city_id,city_cnt

主要是求用户是否在某个省份达到出现次数标准的进度,比如说小明在济南出现2次,在青岛出现5次,

但是在济南出现的标准次数应该为4次,在青岛出现的标准次数为4次。所以在山东出现的标准次数为8次,而小明达标的次数分别为2次和4次(超过标准按照标准统计),所以小明在山东出现的次数进度为67%。

针对以上数据量,目前想到的方案有以下三种:

方案一:拆分数据、分散资源,建立多个计算task

(1)由于目的是对用户进行统计,所以对A、B表以及目标表根据uid首位数字设置分区,将数据量拆分;

首先需要对uid首位数进行数据量查询,然后按照数据量的大小进行合理分配分区。

(2)根据分区建多个task,跑入对应目标表的分区;

对相同分区下的用户数据进行数据计算,然后建立多个task进行跑数,分散资源。

方案二:维度进行高粒度汇总,减小数据量

(1)维护一张城市和省份的维度表,在A表的计算过程中进行聚合,直接输出用户到省份维度,省略用户对城市的维度(A表)。

这样的话,就获取不到A表,得不到用户对城市维度的明细数据,对与数仓建设和后期数据维护不友好,但是对于本次项目的统计确实性能得到很好的提升。如果效果不好的话可以再重复方案一在用户对省份维度上建立分区。

(2)再与其用户到省份维度的表进行关联。

方案三:维度直接汇总到最高用户维度,建立数组存储省份信息,最大粒度减小数据量。

(1)涉及到的底层表聚合到用户维度,其余对应的城市和次数字段做成数组进行存储。

建立以uid作为主键,其余字段作为数据map的表,最大限度的满足当前需求,但是不利于数仓基础表的维护,再做新需求利用到同样数据源还需要进行同样的操作

(2)解析数组,再进行关联,输入到目标表。

对所有汇总到用户维度的底层表进行解析数组,然后进行关联再计算。

针对以上方案,如果既需要满足本需求,又有利于数仓建设的话,推荐方案一,如果是敏捷开发,满足此需求的话推荐方案三,对于数据集市建设,如果没必要细致到用户到城市维度的话,建议方案二,三种方案各有利弊,具体选择需要根据实际情况定夺。

如果大家有更完美的方案的话,欢迎留言!

插曲:对于如何分区的话,可以参考一下本福特定律,但是对于有规则化的uid,没啥意义。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,304评论 0 9
  • ORA-13000: 维数超出范围 ORA-13001: 维数不匹配错误 ORA-13002: 指定的级别超出范围...
    thinkact阅读 19,207评论 1 5
  • 前言 互联网行业,除了数据量大之外,业务时效性要求也很高,甚至很多是要求实时的, 另外,互联网行业的业务变化非常快...
    原上野阅读 9,227评论 5 32
  • 今天早上起来,我在充满阳光的语音陪伴中去做自己的事情,给我许多的感悟。人要学会给予,要做一个能够给予周边光芒的人,...
    迎风飞扬lele阅读 193评论 0 0
  • 这21天的晚上,我一定要做到: 1、晚上听书30分钟 2、晚上9点后不吃零食 3、晚上23.30以前睡觉 实际完成...
    快乐番茄阅读 83评论 0 0