搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
博客
群组
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云
»
专题
›
交流区
›
技术交流
›
Hadoop|YARN
›
疑问解答
›
用户行为的数据放进hadoop中还是mysql中再进行统计?为 ...
0
4
1
分享
用户行为的数据放进hadoop中还是mysql中再进行统计?为什么?
newmanforme
2013-12-11 12:49:56
发表于
疑问解答
[显示全部楼层]
阅读模式
关闭右栏
4
10078
最终确定要做5种类型的推荐,每种推荐类型及需要的数据简要叙述如下:
1、根据商品id获得所属类别的销售排行榜
* 商品id
* product_category表(商品与类别的关系表)
* order_items表(订单明细表。位于Order库)
2、根据商品id获得浏览了该商品的用户最终购买的商品
* 商品id
* user_visited_prd表:能获得浏览了该商品的所有用户
* product_category表(商品与类别的关系表):从此表中能够获得类别
* orders表
* order_items表(订单明细表)
3、根据商品id获得其关联商品
* 商品id
* r_pid_related_pid表:人为在此表中设置商品与商品之间的关联。此表用于在OA中做细调。
4、根据商品id获得购买了该商品的用户还购买的商品
* 商品id
* orders表
* order_items表
* product_category表:从此表中获得类别。
5、根据商品id获得浏览了该商品的用户还浏览了的商品
* 商品id
* user_visited_prd表
* product_category表
我认为的作法是:
数据就放在mysql数据库中,每天凌晨3点跑一个定时任务,分析这些数据,得出最终的今天这一天的推荐结果数据放入数据库表中,然后前端页面调用接口查询这个最终结果数据就行了。
原因:
1、数据放在数据库中,查询、统计方便。
2、数据库表中已经有这些数据,直接用就行了,这样保证了:
(1)、数据源只有一个
(2)、数据的最新性
避免了:
(1)、同步数据所带来的数据大量重复、不即时性、复杂性
增加了:
(1)、维护量
而我们经理的想法是:
将所有需要的数据,放入hdfs中,然后用hadoop进行分析,得出来最终的结果数据,再放入mysql数据库表中。前端接口再查询访问这些最终的结果数据。
我认为这样做的好处是(按重要度排列):
1、所有的数据放入了hdfs中,而不放入线上mysql数据库中,这样在统计分析数据时,就不会影响正在下单、操作数据库的用户。
2、利用了hadoop的“分布”式“计算”框架的优势,可以像多核cpu一起共同计算一样,这样分析速度会快。
3、减少了线上mysql数据库的负担。
4、所有需要的数据,都放在hdfs中,这样让相关人员的思路也会觉得清晰。
我认为这样做的缺点:
1、数据不放在数据库中,查询、统计不如写sql语句那样方便。得写map-reduce程序,与写sql语句相比复杂得多。
2、现在数据库表中已经有这些数据,还需要再复制一份到hdfs中,这就使:
(1)、数据源有了2个,那就必然涉及到同步问题,也就要解决同步的那些问题:
* 数据的最新性
* 数据的大量重复
* 维护量
请老师指点,应该选取哪种方案呢吗?为什么吗?急!谢谢您师兄!
hdfs
,
mysql
,
hadoop
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
相关帖子
.
求教,google cluster trace的使用!
.
HDAOOP SIMPLIZE TOOLKIT hadoop mapreduce简化开发包
.
Hadoop DataNode连接NameNode超时
.
sqoop 数据转移问题 from mysql to hive
.
使用hdfs fsck检查副本数不足,怎么恢复
.
阿里云部署hadoop,使用shell操作一切正常,但是使用java api操作上传文件大小为0
.
基于Hadoop的分布式云存储系统 托管于Github | 欢迎大家star|follow
.
mapreduce出现异常:Error: org.apache.hadoop.ipc.RemoteException(java.io.IOExc...
.
Presto如何支持Hive的日期函数?
已有(5)人评论
电梯直达
正序浏览
kaif22
发表于 2013-12-11 12:50:28
当你数据量达到一定量级的时候,在hadoop分布计算优势很明显。
而你在mysql直接分析,会占用大量IO,甚至影响在线系统稳定。
前提,数据量够大。如果只是几千几百的数据,那么确实在mysql搞就可以了。
回复
使用道具
举报
显身卡
oscarswing
发表于 2013-12-11 12:51:23
跟你的数据量有关,如果数据量较大,还是把数据导到hive中,用hive直接写sql分析也是一样的
回复
使用道具
举报
显身卡
sq331335144
发表于 2013-12-11 12:51:57
同ls..看数据量..
回复
使用道具
举报
显身卡
lxs_huntingjob
发表于 2013-12-11 12:52:35
经理对吧,凌晨3点也有买东西的,数据量大的话,你跑任务,会卡的不行,所以这些任务分离出来,分析完再给它,这样多好。你说的两个缺点都不是缺点:1你说复杂,技术总要提高嘛,技术复杂也得提高啊,不能不前进吧。2其实你们要放到hadoop上的数据只是第一个吧吗?因为第一个实时性不要求,只要显示昨天之前的就行吧吗?所以根本不要同步,只要半夜把销售量相关的大量数据给hadoop即可,处理完后再还给mysql,或者放到其他单独数据库,然后产品销量这块的数据直接调用即可。
回复
使用道具
举报
显身卡
xiaolongwu1987
发表于 2013-12-11 12:53:20
引用 楼主 Drop1 的回复:
我认为这样做的好处是(按重要度排列):
1、所有的数据放入了hdfs中,而不放入线上mysql数据库中,这样在统计分析数据时,就不会影响正在下单、操作数据库的用户。
我认为这样做的缺点:
1、数据不放在数据库中,查询、统计不如写sql语句那样方便。得写map-reduce程序,与写sql语句相比复杂得多。
2、现在数据库表中已经有这些数据,还需要再复制一份到hdfs中,这就使:
(1)、数据源有了2个,那就必然涉及到同步问题,也就要解决同步的那些问题:
* 数据的最新性
* 数据的大量重复
* 维护量
见粗体字,就这一条原因足以打倒LZ认为的
所有缺点
。
不影响正常业务是第一最高优先级
回复
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
newmanforme
注册会员
关注
11
主题
40
帖子
2
粉丝
TA的主题
用户行为的数据放进hadoop中还是mysql中再进行统计?为什么?
2013-12-11
百度云存储和360云存储哪个好啊
2013-10-24
百度云存储ACL是什么?
2013-10-24
24小时热文
哈佛通识教育红皮书 (北大高等教育文库·大
代码精进之路:从码农到工匠
为什么面试难!一文帮我们看透本质,拿捏of
程序员薪资排名,AI位居榜首,平均年薪277
Django实战:Python Web典型模块与项目开发
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈