当前位置:首页 > 技术 > 正文内容

Hive数据仓库实现电影票房分析实战

访客 技术 2026年7月16日 1

本文档介绍如何利用Hive进行电影票房数据的统计分析,涵盖五个典型的业务分析场景。

场景一:2020年度票房冠军榜TOP10

首先进入Hive环境并创建专用数据库:

hive

create database if not exists cinema_db;

use cinema_db;

建立票房数据存储表,使用制表符作为字段分隔符:

create table movie_data(
    movie_name string,
    box_office string,
    box_rate string,
    sessions string,
    show_count_rate string,
    avg_number string,
    attendance string,
    total_box_office string,
    movie_days string,
    record_time string,
    release_date string
) 
row format delimited fields terminated by '\t' 
stored as textfile;

加载本地预处理数据文件:

load data local inpath '/data/workspace/myshixun/data/movies.txt' into table movie_data;

创建结果汇总表:

create table top10_gross(
    movie_name string, 
    gross_revenue float
) 
row format delimited fields terminated by '\t' 
stored as textfile;

执行查询并导出结果:

insert overwrite table top10_gross 
select movie_name, max(round(total_box_office, 1)) as revenue
from movie_data 
where release_date like '2020%'
group by movie_name  
order by revenue desc 
limit 10;

场景二:2020年国庆档票房增长分析

统计国庆黄金周期间票房表现前三的影片及其逐日票房数据。

create table national_day_gross(
    movie_name string, 
    daily_gross float,
    record_date string
) 
row format delimited fields terminated by '\t' 
stored as textfile;

insert overwrite table national_day_gross 
select movie_name, box_office, record_time 
from movie_data 
where movie_name in (
    select t.movie_name from (
        select movie_name, sum(box_office) as total 
        from movie_data 
        where record_time between '2020-10-01' and '2020-10-07' 
        group by movie_name 
        order by total desc 
        limit 3
    ) as t
) 
and record_time between '2020-10-01' and '2020-10-07';

场景三:2020年度单日票房峰值统计

筛选2020年度单日综合票房最高的十天。

create table daily_peak_gross(
    record_date string, 
    daily_total float
) 
row format delimited fields terminated by '\t' 
stored as textfile;

insert overwrite table daily_peak_gross 
select record_time, round(sum(box_office), 2) as total
from movie_data 
where release_date like '2020%'
group by record_time  
order by total desc 
limit 10;

场景四:2020年首映影片首周票房追踪

提取2020年首映的电影上映后七天的完整票房记录。

create table first_week_gross(
    movie_name string,
    record_date string, 
    daily_gross float
) 
row format delimited fields terminated by '\t' 
stored as textfile;

insert overwrite table first_week_gross 
select 
    t.movie_name,
    movie_data.record_time,
    box_office 
from movie_data 
left join (
    select movie_name, record_time 
    from movie_data 
    where movie_days = '上映首日' and release_date like '2020%'
    group by movie_name, record_time
) t on movie_data.movie_name = t.movie_name 
where movie_data.record_time between t.record_time and date_add(t.record_time, 6)
order by t.movie_name, movie_data.record_time;

场景五:节假日观影人次对比分析

统计2020年元旦假期与国庆假期后七天的观影总人数。

create table holiday_attendance(
    day_string string,
    holiday_name string, 
    total_attendance bigint
) 
row format delimited fields terminated by '\t' 
stored as textfile;

insert overwrite table holiday_attendance 
select 
    split(record_time, '-')[2],
    case 
        when t.record_time between '2020-10-01' and '2020-10-07' then 'national_day' 
        when t.record_time between '2020-01-01' and '2020-01-07' then 'new_year_day' 
        else 'other' 
    end as holiday_name,
    cast(sum(attendance_num) as bigint) 
from (
    select record_time, avg_number * sessions as attendance_num 
    from movie_data 
    where record_time between '2020-10-01' and '2020-10-07' 
       or record_time between '2020-01-01' and '2020-01-07'
) t 
group by record_time;

总结

通过上述五个典型业务场景的Hive SQL实现,可以掌握数据仓库中进行票房数据分析的核心方法,包括数据导入、分组聚合、多表连接、条件筛选等操作。这些分析结果对于电影行业的票房预测、排片决策等具有重要参考价值。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。