Currently browsing category

数据分析

可扩展的中小型推介系统实践

本文的目的是描述如何使用 Mahout 开发/部署一个可扩展的中小型推介系统

我会一步一步的描述如何用 Mahout 搭建一个这样的推介系统。本文假设读者对 Mahout 有所了解,熟悉 Mahout 中的协同过滤(Collaborative Filtering)推介算法。本文不会描述 CF 相关的具体算法。

场景描述

这是最近在做的一个推介系统的实际场景。垂直领域的视频播放网站,用户访问我们的网站观看视频,我们根据用户的观看记录向用户推介其可能感兴趣的视频。

  1. 视频数量:几千或几万
  2. 用户数量:几十万
  3. 用户每播放完一个视频后,在视频播放页面显示用户可能喜欢的其他视频
  4. 所有的播放请求中,20% 是登陆用户,80% 为未登陆的匿名用户(由于版权的原因,有些视频必须登陆付费之后才能观看,所以登陆用户的比例很高)

阅读全文 “可扩展的中小型推介系统实践” »

Hive TODO: query over time-based window

先给自己挖一个坑:给 Hive 增加一个能够在滑动的时间窗口上查询的功能。

类似于下面的语句:

select symbol, min(ticks.timestamp, news.timestamp) as minT
  from StockTickEvent.win:time(30 sec) as ticks, NewsEvent.win:time(30 sec) as news
  where ticks.symbol = news.symbol

静态数据上进行基于时间的滑动窗口查询(哎,这名字起的)

难点是

  • 进行基于时间的滑动窗口查询的前提是数据按时间排序的,而静态的数据是不保证这点的,必须先按某个字段对数据进行排序。
  • 完备的语义定义。
  • 理解 Hive 的 Antlr 语法。并增加相应的语法。
  • 编写 Map Reduce, 把查询转化成最优的 Hadoop job。