大数据存储与处理
Posted 花落随风轻飘舞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据存储与处理相关的知识,希望对你有一定的参考价值。
目录
1.任务说明
1.1任务描述
用户画像可以了解用户对哪些类型的短视频感兴趣,推荐用户喜欢的短视频,吸引更多的用户使用。同时可以了解各年龄段或不同性别的用户喜欢类型视频占比情况。要求多线程生成1000万条以上的数据并将数据存入hbase,之后采用hadoop或spark等离线技术处理数据并将结果数据存入redis等NoSQL数据库中,最后可视化展示处理后的结果,能够通过hive实现用户交互式查询。
1.2架构设计
项目整体架构如图所示,总共分为五层,数据来源层、数据存储层、数据处理层、业务层、展示层。数据来源层中,通过python多线程生成数据并将数据保存在多个csv文件中。原始数据存储在定义好的hbase表中,hbase表结构为一个列族有15列。Redis数据库中存储的是处理后的以有序集合形式存储的结果数据。数据处理层中,因为spark处理数据速度相比hadoop来说更好,选用spark sql来处理数据,对数据进行统计。同时选用hive实现交互式查询,对二者进行一个简单的比较。业务层中,需要实现一些榜单等数据的展示以及满足用户通过id交互式查询的需求。展示层中,使用html,css,js来完成前端UI界面的设计,通过ajax向servlet请求数据的方式实现从后端获取数据,也可以选用flask+ajax或php+ajax获取数据。
1.3数据流动图
数据流动图如图所示,生成的原始数据存储在csv文件中,后保存在Hbase表中,通过Spark sql对原始数据处理后将结果数据存储在redis有序集合中,最终将Hive交互式查询结果和Redis有序集合保存的结果数据通过界面展示。
1.4运行环境
hadoop集群,spark集群(不用spark无需配置),tomcat(不使用JavaWeb不用配置)
2.数据生成
2.1 生成数据属性说明
属性 | 类型 | 说明 |
---|---|---|
uid | String | 用户ID,唯一 |
uname | Sring | 用户名 |
age | lnt | 年龄 |
gender | String | 性别 |
aid | String | 作者ID |
aname | String | 作者名称 |
vid | String | 视频ID |
type | String | 视频类型 |
date | Datetime | 日期 |
play | Int | 播放时长 |
comment | Int | 评论数 |
like | Bool | 是否点赞 |
favorite | Bool | 是否收藏 |
share | Bool | 是否转发 |
follow | Bool | 是否关注 |
2.2 数据生成代码
import datetime
import re
import pandas as pd
import threading
import random
import time
from tqdm import tqdm
# @Author: wzj
# @Time: 2022-03-10
# @Function: makedata
first_name_array = [
'赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '楮', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施',
'张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范',
'彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷',
'贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常', '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜',
'顾', '孟', '平', '黄', '和', '穆', '萧', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成',
'戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '梁', '杜', '阮', '蓝', '闽', '席', '季', '麻', '强', '贾', '路',
'娄', '危', '江', '童', '颜', '郭', '梅', '盛', '林', '刁', '锺', '徐', '丘', '骆', '高', '夏', '蔡', '田', '樊', '胡', '凌', '霍', '虞',
'万', '支', '柯', '昝', '管', '卢', '莫', '经', '房', '裘', '缪', '干', '解', '应', '宗', '丁', '宣', '贲', '邓', '郁', '单', '杭', '洪',
'包', '诸', '左', '石', '崔', '吉', '钮', '龚', '程', '嵇', '邢', '滑', '裴', '陆', '荣', '翁', '荀', '羊', '於', '惠', '甄', '麹', '家',
'封', '芮', '羿', '储', '靳', '汲', '邴', '糜', '松', '井', '段', '富', '巫', '乌', '焦', '巴', '弓', '牧', '隗', '山', '谷', '车', '侯',
'宓', '蓬', '全', '郗', '班', '仰', '秋', '仲', '伊', '宫', '宁', '仇', '栾', '暴', '甘', '斜', '厉', '戎', '祖', '武', '符', '刘', '景',
'詹', '束', '龙', '叶', '幸', '司', '韶', '郜', '黎', '蓟', '薄', '印', '宿', '白', '怀', '蒲', '邰', '从', '鄂', '索', '咸', '籍', '赖',
'卓', '蔺', '屠', '蒙', '池', '乔', '阴', '郁', '胥', '能', '苍', '双', '闻', '莘', '党', '翟', '谭', '贡', '劳', '逄', '姬', '申', '扶',
'堵', '冉', '宰', '郦', '雍', '郤', '璩', '桑', '桂', '濮', '牛', '寿', '通', '边', '扈', '燕', '冀', '郏', '浦', '尚', '农', '温', '别',
'庄', '晏', '柴', '瞿', '阎', '充', '慕', '连', '茹', '习', '宦', '艾', '鱼', '容', '向', '古', '易', '慎', '戈', '廖', '庾', '终', '暨',
'居', '衡', '步', '都', '耿', '满', '弘', '匡', '国', '文', '寇', '广', '禄', '阙', '东', '欧', '殳', '沃', '利', '蔚', '越', '夔', '隆',
'师', '巩', '厍', '聂', '晁', '勾', '敖', '融', '冷', '訾', '辛', '阚', '那', '简', '饶', '空', '曾', '毋', '沙', '乜', '养', '鞠', '须',
'丰', '巢', '关', '蒯', '相', '查', '后', '荆', '红', '游', '竺', '权', '逑', '盖', '益', '桓', '公', '晋', '楚', '阎', '法', '汝', '鄢',
'涂', '钦', '岳', '帅', '缑', '亢', '况', '后', '有', '琴', '商', '牟', '佘', '佴', '伯', '赏', '墨', '哈', '谯', '笪', '年', '爱', '阳',
'佟', '万俟', '司马', '上官', '欧阳', '夏侯', '诸葛', '闻人', '东方', '赫连', '皇甫', '尉迟', '公羊', '澹台', '公冶', '宗政', '濮阳', '淳于', '单于',
'太叔', '申屠', '公孙', '仲孙', '轩辕', '令狐', '锺离', '宇文', '长孙', '慕容', '鲜于', '闾丘', '司徒', '司空', '丌官', '司寇', '仉', '督', '子车',
'颛孙', '端木', '巫马', '公西', '漆雕', '乐正', '壤驷', '公良', '拓拔', '夹谷', '宰父', '谷梁', '段干', '百里', '东郭', '南门', '呼延', '归', '海',
'羊舌', '微生', '梁丘', '左丘', '东门', '西门', '南宫']
last_name_array = [
'一', '乙', '二', '十', '丁', '厂', '七', '卜', '人', '入', '八', '九', '几', '儿', '了', '力', '乃', '刀', '又', '三',
'于', '干', '亏', '士', '工', '土', '才', '寸', '下', '大', '丈', '与', '万', '上', '小', '口', '巾', '山', '千', '乞',
'川', '亿', '个', '勺', '久', '凡', '及', '夕', '丸', '么', '广', '亡', '门', '义', '之', '尸', '弓', '己', '已', '子',
'卫', '也', '女', '飞', '刃', '习', '叉', '马', '乡', '丰', '王', '井', '开', '夫', '天', '无', '元', '专', '云', '扎',
'艺', '木', '五', '支', '厅', '不', '太', '犬', '区', '历', '尤', '友', '匹', '车', '巨', '牙', '屯', '比', '互', '切',
'瓦', '止', '少', '日', '中', '冈', '贝', '内', '水', '见', '午', '牛', '手', '毛', '气', '升', '长', '仁', '什', '片',
'仆', '化', '仇', '币', '仍', '仅', '斤', '爪', '反', '介', '父', '从', '今', '凶', '分', '乏', '公', '仓', '月', '氏',
'勿', '欠', '风', '丹', '匀', '乌', '凤', '勾', '文', '六', '方', '火', '为', '斗', '忆', '订', '计', '户', '认', '心',
'尺', '引', '丑', '巴', '孔', '队', '办', '以', '允', '予', '劝', '双', '书', '幻', '玉', '刊'以上是关于大数据存储与处理的主要内容,如果未能解决你的问题,请参考以下文章
大数据存储引擎 NoSQL极简教程 An Introduction to Big Data: NoSQL
大数据,也就是国外常说的Big Data。IBM把大数据概括成了三个V,请问是哪三个?
大数据时代之一,Spark或为Big data主流平台,什么是Scala函数式编程?计算机诞生之前,数学与统计学家们是如何计算?
Big Spatio temporal Data(R-tree Index and NN & RNN & Skyline)