spark使用总结

以下纯属个人意见

spark作为一种实时或历史数据计算方案,有如下几个特点:

  1. 特别稳定。很难挂掉,我见过所有组件down掉,但spark没见过
  2. 性能好。对内存比较节约,不会浪费或泄漏
  3. 安装简单,即可单点也可集群,仅需jre,解压即可使用

当然也有缺点:

  1. 迭代很快,中文书籍已经跟不上了,很多已有方案已经过时

写spark job的原则:

  1. spark终究是一个map-reduce的过程,核心就是多次,多种方法来构造key-value。所以要灵活掌握各种map方法,拼接复杂key
  2. 尽量用dataframe和sql,因为绝大多数data analysis的数据源都是结构化的,能够做df。用sql的好处是学习成本低,通俗易懂,而且可以少写复杂代码
  3. rdd要尽量小,问题分解得越细rdd就越小。比如计算直播用户的首帧时间(就是用户从点击视频到看到第一个画面的时间),可以按维度:事件->live session id->用户id->unique id来filter(uniqeid是一种多个事件共享的id,比如一次点击触发多个埋点,它们是一次用户行为里的),这样就按视频、用户、单次观看(因为可以反复进出)得到一个最小化rdd,这里面若干个事件即可进行计算
  4. 建议用scala来写,因为spark本来就是用scala写的。用python写需要一些特殊的模块,本地不好开发和调试。如果有java基础,scala学习曲线也比较平滑
posted @ 2017-10-09 14:30  Els0n  阅读(196)  评论(0编辑  收藏  举报