视频网站的测试数据,用 Hive 真挺方便的。你只要搞懂它怎么用 SQL 跑在 Hadoop 上,多大数据问题就都能迎刃而解。这个实战项目主要就是围绕一个叫chbVideoOut
的文件展开,里面是用户行为日志、视频 ID、观看时间等等,格式比较常见,CSV 那一套。
先建表,定义好字段结构,再用LOAD DATA
命令把数据喂进去,嗯,几步搞定。比如你想看看谁的视频最受欢迎,直接一条GROUP BY
配合ORDER BY
的 SQL 就行,响应也快,代码也简单。
而且 Hive 支持分区,大文件香。按日期分区能省不少查询时间,像这样:
CREATE TABLE video_views_partitioned (
userId INT,
videoId INT,
watchTime INT
) PARTITIONED BY (date DATE)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
加个分区,指定文件路径,再LOAD DATA
一下,查询范围缩小多,效率提升不少。你也可以建个视图,把常用的逻辑抽出来,比如用户总观看时间,后面要用就方便。
建议你先用本地 CSV 文件练练手,等熟练了再上 HDFS 环境也不迟。如果你对 Hive 刚上手,又想实战演练下,这套视频站点的测试数据挺合适的,SQL 风格、分区策略都能练到位。