基于EMR离线数据分析

背景知识

E-MapReduce(简称“EMR”)是云原生开源大数据平台,向客户提供简单易集成的Hadoop、Hive、Spark、Flink、Presto、Clickhouse、Delta、Hudi等开源大数据计算和存储引擎。EMR计算资源可以根据业务的需要调整。EMR可以部署在阿里云公有云的ECS和ACK、专有云平台。产品文档地址:https://www.aliyun.com/product/emapreduce

产品优势

开源生态:提供高性能、稳定版本Hadoop、Spark、Hive、Flink、Kafka、HBase、Presto、Impala、Hudi等开源大数据组件,客户可根据场景灵活搭配使用

引擎优化:多引擎性能优化,如Spark SQL较开源版本提升6倍。采用JindoFS+OSS,保证数据可靠性基础上,性能大幅提升

便捷运维:在阿里云控制台和OpenAPI方便地对集群、节点和服务进行监控和运维操作。助您大幅提升运维工作效率,让数据工程师更专注于业务开发

节约成本:集群资源可自动按需匹配,您只需要按实际使用量付费,减少资源浪费成本。支持阿里云抢占式实例、预留实例券(RI),进一步降低成本

弹性资源:可以灵活调整集群资源,在数分钟内创建出基于云服务器 ECS、容器 ACK的集群,快速响应业务需求

安全可靠:通过 VPC 和安全组设置集群网络安全策略,支持Kerberos身份认证和数据加密,使用Ranger数据访问控制。支持数据加密,保证数据安全

对比维度 EMR 自建Hadoop
成本 资源按量付费,支持集群资源灵活调整,数据分层存储,资源使用率高。无额外软件License费用。 提前预估资源,且资源相对固定,资源使用率低。采用Hadoop发行版,需额外支付License费用。
性能 较开源版本性能大幅提升,如EMR SparkSQL性能是开源版本6倍。 采用开源社区版本,性能需自行优化。
易用 分钟级别启动Hadoop集群,敏捷响应业务需求。 采购服务器,部署Hadoop生态组件,周期长达数周。
弹性 可根据作业临时启动和销毁集群。集群资源可根据时间周期或集群负载动态自动调整。基于JindoFS计算存储分离架构,轻松分别扩展计算和存储资源。 计算和存储耦合,资源相对固定,无法弹性调整资源。
安全 支持企业级多租户资源管理能力,支持对表、列、行级别的权限控制和日志审计,支持数据加密。 多租户管理能力需自行配置,能力不完善,无法满足企业级需求。
可靠 大规模、企业级环境的检验,随开源版本升级,并经过专业的兼容性验证测试,提供优于社区版本的使用体验。 需自行更新和升级开源版本,验证各组件版本兼容性,自行修复社区bug。
服务 专业和资深大数据专家技术服务团队提供售后支持。 社区版本无服务支持,Hadoop发行版,需额外支付License和服务费用。



上传数据到HDFS:


本步骤将指导您如何将自建数据上传到HDFS。

1. 执行如下命令,创建HDFS目录。

说明:在LX终端中,粘贴快捷键为SHIFT+CTRL+V。

hdfs dfs -mkdir -p /data/student

2. 上传文件到hadoop文件系统。

a.执行如下命令,创建u.txt文件。

#创建u.txt文件
vim u.txt

b.按 "i" 键进入编辑模式,通过粘贴快捷键(SHIFT+CTRL+V)将下方内容复制到文件中,按"Esc"返回命令模式,输入":wq"保存

说明:第一列表示userid,第二列表示movieid,第三列表示rating,第四列表示unixtime。

196  242  3  881250949
186  302  3  891717742
22  377  1  878887116
244  51  2  880606923
166  346  1  886397596
298  474  4  884182806
115  265  2  881171488
253  465  5  891628467
305  451  3  886324817
6  86  3  883603013
62  257  2  879372434
286  1014  5  879781125
200  222  5  876042340
210  40  3  891035994
224  29  3  888104457
303  785  3  879485318
122  387  5  879270459
194  274  2  879539794
291  1042  4  874834944
234  1184  2  892079237
119  392  4  886176814
167  486  4  892738452
299  144  4  877881320
291  118  2  874833878
308  1  4  887736532
95  546  2  879196566
38  95  5  892430094
102  768  2  883748450
63  277  4  875747401
160  234  5  876861185
50  246  3  877052329
301  98  4  882075827
225  193  4  879539727
290  88  4  880731963
97  194  3  884238860
157  274  4  886890835
181  1081  1  878962623
278  603  5  891295330
276  796  1  874791932
7  32  4  891350932
10  16  4  877888877
284  304  4  885329322
201  979  2  884114233
276  564  3  874791805
287  327  5  875333916
246  201  5  884921594
242  1137  5  879741196
249  241  5  879641194
99  4  5  886519097
178  332  3  882823437
251  100  4  886271884
81  432  2  876535131
260  322  4  890618898
25  181  5  885853415
59  196  5  888205088
72  679  2  880037164
87  384  4  879877127
290  143  5  880474293
42  423  5  881107687
292  515  4  881103977
115  20  3  881171009
20  288  1  879667584
201  219  4  884112673
13  526  3  882141053
246  919  4  884920949
138  26  5  879024232
167  232  1  892738341
60  427  5  883326620
57  304  5  883698581
223  274  4  891550094
189  512  4  893277702
243  15  3  879987440
92  1049  1  890251826
246  416  3  884923047
194  165  4  879546723
241  690  2  887249482
178  248  4  882823954
254  1444  3  886475558
293  5  3  888906576
127  229  5  884364867
225  237  5  879539643
299  229  3  878192429
225  480  5  879540748
276  54  3  874791025
291  144  5  874835091
222  366  4  878183381
267  518  5  878971773
42  403  3  881108684
11  111  4  891903862
95  625  4  888954412
8  338  4  879361873
162  25  4  877635573
87  1016  4  879876194
279  154  5  875296291
145  275  2  885557505
119  1153  5  874781198
62  498  4  879373848
62  382  3  879375537
28  209  4  881961214
135  23  4  879857765
32  294  3  883709863
90  382  5  891383835
286  208  4  877531942
293  685  3  888905170
216  144  4  880234639
166  328  5  886397722

c. 上传文件u.txt到hadoop文件系统。

hdfs dfs -put u.txt /data/student

3. 查看文件。

hdfs dfs -ls /data/student

基于EMR离线数据分析



使用hive创建表

1. 执行如下命令,登录hive数据库。

hive

2. 创建user表。

CREATE TABLE emrusers (
   userid INT,
   movieid INT,
   rating INT,
   unixtime STRING ) 
  ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY '\t' 
  ;

基于EMR离线数据分析

3. 执行如下命令,从hadoop文件系统加载数据到hive数据表。

LOAD DATA INPATH '/data/student/u.txt' INTO TABLE emrusers;

对表进行操作

1. 查看5行表数据。

select * from emrusers limit 5;

基于EMR离线数据分析

2. 查询数据表中有多少条数据。

select count(*) from emrusers;

返回结果如下,您可以看到您数据表中一共有多少数据,

基于EMR离线数据分析

3. 查询数据表中评级最高的三个电影。

select movieid,sum(rating) as rat from emrusers group by movieid order by rat desc limit 3;

返回结果如下,您可以看到您数据表中评级最高的三个电影。

基于EMR离线数据分析






上一篇:nginx rewrite配置规则详细说明(七)


下一篇:MySQL Group Commit