HIVE官方案例——电影数据(一)

作者: 路人乙yh | 来源:发表于2019-05-07 20:06 被阅读1次

hive官方案例有一个对电影评分数据的分析,统计一周中的哪一天观影人数最多。

1 数据集

数据集用的是经常见到的 ml-100k,共有 10w 条电影评分记录。下载地址 [4.7MB]
在这篇文章中,假设评分的那天就是观影的那天。
下载压缩包后解压,打开READNE可以看到

u.data     -- The full u data set, 100000 ratings by 943 users on 1682 items.

              Each user has rated at least 20 movies.  Users and items are

              numbered consecutively from 1.  The data is randomly

              ordered. This is a tab separated list of 

             user id | item id | rating | timestamp. 

              The time stamps are unix seconds since 1/1/1970 UTC   

u.data 就是评分的数据,每一行的数据是 user id, iterm id, rating, timestamp,由 tab 键分隔。用记事本打开可以看到数据如下:


u.data

2 分析

2.1 建表

进入hive命令行,
create table u_data (userid INT, movieid INT, rating INT, unixtime STRING) row format delimited fields terminated by '\t';

2.2 导入数据

load data local inpath '/home/yh/data/u.data' into table u_data;

2.3 建新表

建立一个新表,表的列为userid, movieid, rating, weekday :
create table u_data_new (userid INT, movieid INT, rating INT, weekday INT) row format delimited fields terminated by '\t';

2.4 用脚本转化旧表数据到新表

2.4.1 创建转化脚本

在文件系统的命令行中依次输入下列命令,创建一个将时间戳转化为星期数( 1,2 ,,7)的python文件
touch weekday_mapper.py
vim weekday_mapper.py
输入以下代码

import sys
import datetime

for line in sys.stdin:
        line = line.strip()
        userid, movieid, rating, unixtime = line.split('\t')
        weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()
        print '\t'.join([userid, movieid, rating, str(weekday)])

按下键盘上Esc键,:wq保存并退出。

2.4.2 在hive中转化

在hive命令行中依次输入
add file /home/yh/scripts/weekday_mapper.py
insert overwrite table u_data_new select transform (userid,movieid,rating,unixtime) using 'python weekday_mapper.py' as (userid,movieid,rating,weekday) from u_data;

2.5 查询

select weekday ,count(1) count from u_data_new group by weekday order by count desc;
命令执行完的输出结果如下图所示

查询结果

3 可视化

3.1查询结果保存到本地文件夹中

insert overwrite local directory '/home/yh/data' select weekday ,count(1) count from u_data_new group by weekday order by count desc;
运行完打开上面输入的文件夹路径,发现有一个000000_0文件,cat 000000_0查看与 2.5 节控制台输出结果相同,

默认分隔符保存
注意到文件的分隔符没有显示出来,hive保存文件默认分隔符为^A
为了在python或者其他软件中方便实用,可以设置分隔符为\t ,使用命令insert overwrite local directory '/home/yh/data/terminated_fields' row format delimited fields terminated by '\t' select weekday ,count(1) count from u_data_new group by weekday order by count desc; 注意换一个保存路径。
使用 tab 作为分隔符

3.2画图

使用python读取并画图

import matplotlib.pyplot as plt
import numpy as np

path = r'C:\Users\yyy\Desktop\share_folder'
file = path + '\\000000_0'

a = np.loadtxt(file)

plt.bar(a[:,0], a[:,1], color='lightgreen')
plt.show()
画图结果

相关文章

  • HIVE官方案例——电影数据(一)

    hive官方案例有一个对电影评分数据的分析,统计一周中的哪一天观影人数最多。 1 数据集 数据集用的是经常见到的 ...

  • Impala安装json解析udf插件

    背景 Impala跟Hive一样,是常用的数据仓库组件之一。熟悉Hive的同学肯定知道,Hive官方提供了get_...

  • (一)HIVE基本概念原理

    1、HIve的概念: 官方解释:Hive是基于Hadoop的数据仓库解决方案。由于Hadoop本身在数据存储和计算...

  • Hive特殊分隔符处理

    Hive特殊分隔符处理 案例数据 失败案例: 创建表录入数据 解决方案一: 将数据文件里的||变成| 解决方案二:...

  • sendmail使用案例1

    sendmail使用案例1 查询hive数据后发邮件给开发人员 邮件预览

  • 大数据案例之HDFS-HIVE

    基于Hdfs、hive、mysql数据处理案例,闲时自玩项目 数据采集 数据采集方式有很多种,一般在项目中采用数据...

  • Hive SQL练习之影评案例

    一、思维导图 二、准备工作 2.1使用工具 由于hive安装复杂,本项目使用金融数据分析案例第四篇《Hive初步学...

  • Hive学习笔记(6)DDL

    官方参考文档 LanguageManual DDL 创建/删除/更改/使用数据库 在hive sql中databa...

  • 数仓工具Hive(一):起源

    what is hive 官方文档The Apache Hive ™ data warehouse softwar...

  • 关于Hive的窗口函数

    Hive窗口函数row_number案例 数据文件是:rownumbertest.txt,字段信息是:id,xb,...

网友评论

    本文标题:HIVE官方案例——电影数据(一)

    本文链接:https://www.haomeiwen.com/subject/xgwyoqtx.html