Hadoop|基于Hadoop豆瓣数据分析

Hadoop作为处理大数据重要的分布式架构,熟练掌握每一个组件和知识点是非常重要的。随着现代社会产生的大量信息,大数据已不仅仅是调查领域:它是改变业务实践和营销策略的强大力量。据BCG称, 大数据可以帮助分散的零售商将销售额提高3%至4%。

简介

adoop由Apache软件基金会(Apache Software Foundation)于2006年推出,是一组开源软件,可跨计算机群集进行数据处理和存储。Hadoop主要是作为一种分析工具而开发的,事实证明,它对于大数据分析特别有效。它可以处理结构化和非结构化数据,具有海量存储功能,并允许处理几乎无限的并行任务。

Hadoop由四个主要模块组成

分布式文件系统一也称为HDFS,它可以跨链接的存储设备网络存储数据;MapReduce 一从数据库读取,转换和分析数据;Hadoop Common 一组工具和库,可补充其他模块并确保与用户计算机系统的兼容性;YARN 一集群系统经理。

集群存储系统可以同时在许多设备上运行,因此可以加快数据处理速度。这使得Hadoop对于必须处理大型数据集的任何项目都至关重要。而且,该框架具有很大的灵活性,可以扩 展到任何公司的需求。

Hadoop的用途

客户分析—可以根据来自用户数据的洞察提供个性化的服务,报价和广告;企业项目—有效管理和处理存储在各种服务器上的数据;数据湖一 Hadoop支持从不同的信息流创建原始数据的扩展存储,以后可以对其进行结构化和分析。

引入

豆瓣用户每天都在对“看过”的电影进行“很差”到“力荐”的评价,豆瓣根据每部影片看过的人数以及该影片所得的评价等综合数据,通过算法分析产生豆瓣电影 Top 250。

为了分析电影产业的发展趋势,需要对这些信息做统计分析。

豆瓣网站的数据形式为文本文件(将数据导入到hive中做处理)。

1
#文件数据下载:https://wwyl.lanzoum.com/is9Bp0zdl84h

文件的内容如下

待分析指标如下

1、什么类型的电影平均评分最高。

要求输出:类型 平均分

2、哪个国家是烂片之王(平均评分小于6分的国家)。

要求输出:国家 平均分

各项统计指标需要添加到hbase,以方便查询,分别添加到2个表(一个指标一个表),且在hbase shell中显示你写入的结果数据。

另外,本次操作需要留下日志,在hdfs /log 上传自己的操作记录。

操作过程:

启动hive

1
2
start-all.sh
hive

创建数据库 使用数据库

1
2
create database douban;
use douban;

创建文件夹并导入数据

创建文件夹

1
hadoop fs -mkdir /hadoop_class/douban

导入数据

1
hadoop fs -copyFromLocal ~/douban_movie.txt /hadoop_class/douban

建表

1
2
3
4
5
6
7
8
9
10
11
12
create table yjc_2021900342 ( 
id varchar(255) ,
name varchar(255) ,
nop varchar(255) ,
typle varchar(255),
pop varchar(255),
rtime varchar(255),
longtime varchar(255),
ageyear varchar(255),
grade varchar(255),
plocation varchar(255))
row format delimited fields terminated by ','stored as textfile location '/hadoop_class/douban';

第一题

什么类型的电影平均评分最高。要求输出:类型 平均分

代码:

1
2
3
4
select typle,AVG(grade) as t
from yjc_2021900342
GROUP BY typle
ORDER BY t DESC LIMIT 1;

结果:

第二题

什么类型哪个国家是烂片之王(平均评分小于6分的国家)。要求输出:国家 平均分

代码:

1
2
3
4
select pop,AVG(grade) as t
from yjc_2021900342
GROUP BY pop
HAVING t<6

结果:

将各项统计指标需要添加到hbase,以方便查询,

启动hbase

1
2
start-hbase.sh
hbase shell

建表

1
create 'yejunchen_result','info'

将题目一结果插入表中

1
2
#put 'yejunchen_result','1','info:西部','9.1'
put yejunchen_result','1','info:xibu','9.1'

(因为中文显示有问题,我将拼音插入)

1
scan 'yejunchen_result_1'

同理,将题目二结果插入表中

1
2
3
create 'yejunchen_result_1','info'
put 'yejunchen_result_1','1','info:moxige,bolan','5.8,5.7'
scan 'yejunchen_result_1'

将本次操作留下日志,在hdfs 的 /log 下 上传自己的操作记录。

创建文件夹

1
hadoop fs -mkdir /log

在本地创建log.txt文件

1
touch log.txt

将数据写入

1
vi log.txt

编辑好后通过强制保存并退出

1
:wq!

上传日志

1
hadoop fs -copyFromLocal ~/log.txt /log