大数据基础平台——MapReduce计算框架

1.实验目的

  1. 了解与熟悉MapReduce基本原理;
  2. 掌握MapReduce程序实现词频统计的方法;
  3. 掌握MapReduce程序实现数据连接的方法。

2.实验内容及结果截屏

(1)MapReduce程序实现词频统计

①map函数

创建map函数的Python脚本mapper.py:

 

②reduce函数

创建reduce函数的Python脚本reducer.py:

③本地测试

在提交到Hadoop执行前,先在本地进行测试。

使用chmod命令开放脚本的执行权限:

 根据之前章节的例子,使用echo命令和输出重定向,创建一个仅有3行内容的文本文件test.txt:

 使用cat命令将文本输出,并用管道|将其作为脚本mapper.py的标准输入,执行脚本mapper.py,查看Map阶段的输出:

 进一步加入管道|,并使用sort命令按字母排序,查看Reduce阶段的输入:

 进一步加入管道|,并执行脚本reducer.py,查看Reduce阶段的输出:

④数据准备

使用hdfs dfs -put命令从本地文件系统将文件夹/opt/data/novels上传到到HDFS:

⑤提交到Hadoop集群执行

使用hadoop jar命令将MapReduce程序提交到Hadoop集群执行:

⑥查看结果

使用hdfs dfs -ls命令显示文件(夹)统计信息:

使用hdfs dfs -tail命令显示文件末尾1KB内容:

 

(2)MapReduce程序的Reducer数量

①Hadoop流处理命令中,指定选项numReduceTasks表示Reducer数量,这里设为3:

 ②使用命令hdfs dfs -ls显示文件(夹)统计信息:

 (3)MapReduce程序的Combiner

①Hadoop流处理命令中,指定选项combiner表示Combiner函数脚本:

 

 (4)MapReduce程序实现数据连接

第一个数据集的路径为/opt/data/flights/flights14.csv:

 第二个数据集的路径为/opt/data/flights/carrier.csv:

①map函数

创建map函数的Python脚本join_mapper.py:

②reduce函数

创建reduce函数的Python脚本join_reducer.py:

③本地测试

创建一个测试文本文件flights14_sample.csv,为航班准点情况数据的一小部分:

 创建另一个测试文本文件carrier_sample.csv,为航空公司简写与描述映射数据的一小部分:

使用chmod命令开放脚本的执行权限:

使用cat命令将文件flights14_sample.csv输出,并用管道|将其作为脚本join_mapper.py的标准输入,执行脚本join_mapper.py,查看Map阶段的输出:

对文件carrier_sample.csv做同样操作:

 进一步加入管道|,并使用sort命令按字母排序,查看Reduce阶段的输入:

 进一步加入管道|,并执行脚本join_reducer.py,查看Reduce阶段的输出:

④数据准备

使用hdfs dfs -put命令从本地文件系统将文件夹/opt/data/flights上传到到HDFS:

⑤提交到Hadoop集群执行

使用hadoop jar命令将MapReduce程序提交到Hadoop集群执行:

 

 

 ⑥查看结果

 使用hdfs dfs -ls命令显示文件(夹)统计信息:

 使用hdfs dfs -tail命令显示文件末尾1KB内容:

 3.实验分析及小结

       通过此次实验,我对MapReduce的基本原理有了一定的了解与熟悉,同时对MapReduce程序实现词频统计、数据连接的方法也有了一定掌握。

       由于步步紧跟实验指导,在实验过程中我并没有遇到太多问题,只有一些细小的错误。

       例如在编辑mapper.py时多输入了一个空格,导致报了如下错误:

       再例如使用hadoop jar命令将MapReduce程序提交到Hadoop集群执行时,教程告诉我将文件存为output,但报错说output已存在,于是更改文件名为out,之后便不再报错了。

       还有在使用hdfs dfs -tail命令显示文件末尾1KB内容时,教程中给出的语句为hdfs dfs -tail output/part-00000,但因为先前将文件存为out3,所以应当将这条语句改为hdfs dfs -tail out3/part-00000。

       通过此次实验,我学习了MapReduce的相关知识,同时也提升了对代码编写的仔细程度。在之后的实验中,我会更加细心,减少可能会产生的问题。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在进行大数据财务分析时,可以使用Python作为编程语言来处理和分析数据。Python有丰富的数据处理和分析库,如Pandas、NumPy和Matplotlib,可以帮助处理大规模的数据集和生成可视化报告。此外,还可以使用开源的分布式SQL查询引擎Presto来进行交互式的分析查询。Presto适用于处理大规模的数据,并可以实现快速的交互式分析。它可以对250PB以上的数据进行快速地交互式分析,并且在处理速度方面比传统的查询引擎如Hive和MapReduce要好上10倍以上。 另外,Amazon Kinesis Streams是一个用于处理流数据的服务,可以从数十万种来源中连续捕获和存储大量的数据。它可以用于收集和分析网站点击流、财务交易、社交媒体源、IT日志和定位追踪事件等数据,满足大数据财务分析的需求。 对于商务智能方面的需求,可以使用开源的商务智能软件Pentaho。Pentaho是一个基于Java平台的商业智能套件,包括报表、分析、图表、数据集成、数据挖掘等工具软件。它以工作流为核心,强调面向解决方案而非工具组件,可以满足商务智能的各个方面的需求。 综上所述,大数据财务分析可以基于Python编程语言进行处理和分析数据,并可以借助Presto进行交互式查询和分析。此外,Amazon Kinesis Streams可以用于处理流数据,而Pentaho则是一个全面的商务智能套件,可满足各种商务智能需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱桃小叮当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值