Redian新闻
>
有没有大数据 (Hadoop: MapReduce)方面的高手?能帮我看看这
avatar
有没有大数据 (Hadoop: MapReduce)方面的高手?能帮我看看这# DataSciences - 数据科学
i*s
1
【 以下文字转载自 TopArticle 讨论区 】
发信人: qiushuiyiren (秋水), 信区: gardening
标 题: 蛤蟆王子
发信站: BBS 未名空间站 (Fri Aug 31 19:38:21 2012, 美东)
和以往一样,每当做饭需要一些园子里的菜的时候,都会踏着日暮的余光很开心的前往
。因为这些种植不再单纯是应需所及的需要,而是可以调节情绪的一个乐园。
每当经过左手边的小池塘,都会跟远在紧贴着墙根的蛤蟆先生打个招呼,心想,矮油,
您不会真的是个王子吧,即使是,俺也给您找不到公主呐~
嗬嗬,心情真的会很轻松的愉快。
今儿又如往昔,只是不同的是蛤蟆先生老人家竟然在我的脚底这边了! 矮油喂,我停
下脚步学者它的叫声,只见人家的腮帮子鼓了两下,也不回应,我冲着它瞪我的牛眼,
人家也若无其事。
我说,好呀,你有本事喔! 等着我去拿相机把你拍下来,你不要走,就算你厉害喔~
我假装若无其事,假装淡定的走路,可内心狂喜,它不怕我了,这是主要的!
它真的不怕了! 能够让小东西不怕人类那简直是件天方夜谭的事情~
什么是害怕,害怕是你在特定无法反抗的状态里的一种无奈的形式,如果你总会打骂小
孩,小孩肯定会怕你,因为他无法反抗;如果你总是欺负一些弱势,这个群体也肯定会
怕你,因为他们无能为力。
可是,今天这只炙手可热的蛤蟆不怕我了哎,矮油~ 心情真好!
如果世上没有害怕这两个字存在的状态,那可就真的太好了,人与人之间和平,温暖的
相处,在人生百年里相依相偎,那真的是乐土了。
来吧,上图~
我的蛤蟆王子!
要不我也假装公主,吻你一下,你变成那位守候的王子?
哈哈~
8月的最后一天,此时的日暮真的真美!
avatar
w*n
2
捡了一个Hortonworks家的哭胖,可以报名考他家的资格证,半个月以前考了一门
HDPCD:JAVA, 结果挂了,发邮件去问原因,对方不肯告诉我。所以求助版上的大神帮我
看看代码有什么问题?
avatar
f*e
3
文章很有意境,作者天天做饭贴图,呵呵,享受生活啊
这是个标准的青蛙吧
avatar
T*x
4
不是要看代码吗?代码在哪里?

【在 w*****n 的大作中提到】
: 捡了一个Hortonworks家的哭胖,可以报名考他家的资格证,半个月以前考了一门
: HDPCD:JAVA, 结果挂了,发邮件去问原因,对方不肯告诉我。所以求助版上的大神帮我
: 看看代码有什么问题?

avatar
i*s
5
是青蛙,是常见的Pickerel Frog.

【在 f*******e 的大作中提到】
: 文章很有意境,作者天天做饭贴图,呵呵,享受生活啊
: 这是个标准的青蛙吧

avatar
w*n
6
不好意思,昨天把帖子发上来之后工作上遇到点问题,忙别的去了。我稍后把题目和代
码都发上来

【在 T*******x 的大作中提到】
: 不是要看代码吗?代码在哪里?
avatar
n*2
7
嗯,刚刚在首页看到过
作者写的不错,有意境
avatar
w*n
8

首先介绍一下考试背景要求:
Hortonworks的资格证考试主要集中在大数据这块,其中 HDPCD:JAVA 以考察
MapReduce的代码编写为主,也需要掌握HDFS的基础知识。以下是官方给的考试说明:
The HDPCD:Java Exam
Our certifications are exclusively hands-on, performance-based exams that
require you to complete a set of tasks. By performing tasks on an actual
Hadoop cluster instead of just guessing at multiple-choice questions,
Hortonworks Certified Professionals have proven competency and Big Data
expertise. The HDPCD:Java exam consists of tasks associated with writing
Java MapReduce jobs, including the development and configuring of:
combiners,
partitioners,
custom keys,
custom sorting,
and the joining of datasets.
The exam is based on the Hortonworks Data Platform 2.2 and candidates are
provided with an Eclipse environment that is pre-configured and ready for
the writing of Java classes.
官方提供了一套练习题和相关的练习环境,真实的考试题型和考试环境跟练习环境是一
样的,不过难度小很多。
根据官方提供的配置说明搭建练习环境,需要自己开一个AWS 账户,然后创建一个EC2
instance (费用大概一小时 $0.4 左右)。 这个EC2 instance 是ubuntu操作系统,
里面装了一套hadoop,一个eclipse,在hadoop的HDFS上提供了一些练习题需要用到的
数据。为了省去这些环境搭建的麻烦,我下面会把练习题的题目要求和数据贴上来。我
和一个朋友参加的真实考试题目我也会贴出来,但是题目中用到的真实数据没办法提供
,不过它的数据结构和练习题用到的数据的结构是一样的。

【在 T*******x 的大作中提到】
: 不是要看代码吗?代码在哪里?
avatar
I*i
9
avatar
w*n
10
先是练习题:
我大概翻译一下题目要求:
在HDFS上有4个csv文件,/user/horton/weather/下放的是sfo_weather.csv,/user/
horton/flightdelays 下放的是 flight_delays1.csv,flight_delays2.csv,flight
_delays3.csv。
四个文件的字段都是以逗号分隔,flightdelays中的文件记录了2008年飞机延误的信息
,sfo_weather.csv文件中记录了这一年SFO的天气状况,要写一个MapReduce程序,满
足以下需求:
根据日期把 flightdelays 中的 delay 信息和 sfo_weather.csv 的天气信息 join 起
来,即以日,月,年 join,并且 dest 列为SFO
输出结果的字段包括:
Year,Month,DayofMonth,DepTime,ArrTime,UniqueCarrier,FlightNum,
ActualElapsedTime,ArrDelay,DepDelay,Origin,Dest,PRCP,TMAX,TMIN
举例:
2008年1月3号,从 LAS 飞往 SFO 的488号航班延误信息如下:
2008,1,3,1426,1605,WN,488,99,35,31,LAS,SFO,43,150,94
最终的输出结果,以日期正序排序,如果日期相同,则以ArrDelay进行倒序排序(
delay时间最久的排最前); 输出结果包括两个文本文件,字段以逗号分隔,放在HDFS
的/user/hortontask1
我和朋友的相关解答代码放在github上:
https://github.com/WileyWu12555/big-data-fun/tree/master/src/flightdelay1/
join/practice
题目需要用到的数据
https://github.com/WileyWu12555/big-data-fun/tree/master/sample_data/sfo_
weather
----------- 附 英文版原题要求 -----------
Environment Details
A one-node HDP cluster is running on a server named namenode that is
installed with various HDP components, including HDFS, MapReduce, YARN, Tez
and Slider.
You are currently logged in to an Ubuntu instance as a user named horton.
As the horton user, you can SSH onto the cluster as the root user:
$ ssh [email protected]
The root password on the namenode is hadoop.
Eclipse is installed and a shortcut is provided on the Desktop.
A project named Task1 is created for you, and a class named task1.Task1 is
stubbed out already. The build file for this project is preconfigured to use
task1.Task1 as the main class, and the project has the proper build path
for developing Hadoop MapReduce applications.
To build the project, right-click on the Task1 project folder in Eclipse
and select Run As -> Gradle Build.
Ambari is available at http://namenode:8080. The username and password for Ambari are both admin.
TASK 1
There are two folders in HDFS in the /user/horton folder: flightdelays and
weather. These are comma-separated files that contain flight delay
information for airports in the U.S. for the year 2008, along with the
weather data from the San Francisco airport. Write and execute a Java
MapReduce application that satisfies the following criteria:
Join the flight delay data in flightdelays with the weather data in weather
. Join the data by the day, month and year and also where the "Dest" column
in flightdelays is equal to "SFO".
The output of each delayed flight into SFO consists of the following fields:
Year,Month,DayofMonth,DepTime,ArrTime,UniqueCarrier,FlightNum,
ActualElapsedTime,ArrDelay,DepDelay,Origin,Dest,PRCP,TMAX,TMIN
For example, for the date 2008-01-03, there is a delayed flight number 488
from Las Vegas (LAS) to San Francisco (SFO). The corresponding output would
be:
2008,1,3,1426,1605,WN,488,99,35,31,LAS,SFO,43,150,94
The output is sorted by date ascending, and on each day the output is
sorted by ArrDelay descending (so that the longest arrival delays appear
first).
The output is in text files in a new folder in HDFS named task1 with values
separated by commas
The output is in two text files
Data:
-------------------------sfo_weather.csv -----------------------------------
----
STATION_NAME,YEAR,MONTH,DAY,PRCP,TMAX,TMIN
SAN FRANCISCO INTERNATIONAL AIRPORT CA US,2008,01,01,0,122,39
SAN FRANCISCO INTERNATIONAL AIRPORT CA US,2008,01,02,0,117,39
SAN FRANCISCO INTERNATIONAL AIRPORT CA US,2008,01,03,43,150,94
SAN FRANCISCO INTERNATIONAL AIRPORT CA US,2008,01,04,533,150,100
SAN FRANCISCO INTERNATIONAL AIRPORT CA US,2008,01,05,196,122,78
SAN FRANCISCO INTERNATIONAL AIRPORT CA US,2008,01,06,15,106,50
SAN FRANCISCO INTERNATIONAL AIRPORT CA US,2008,01,07,0,111,67
SAN FRANCISCO INTERNATIONAL AIRPORT CA US,2008,01,08,20,128,61
------flight_delays1.csv,flight_delays2.csv,flight_delays3.csv-----
Year,Month,DayofMonth,DayOfWeek,DepTime,CRSDepTime,ArrTime,CRSArrTime,
UniqueCarrier,FlightNum,TailNum,
ActualElapsedTime,CRSElapsedTime,AirTime,ArrDelay,DepDelay,Origin,Dest,
Distance,TaxiIn,TaxiOut,Cancelled,
CancellationCode,Diverted,CarrierDelay,WeatherDelay,NASDelay,SecurityDelay,
LateAircraftDelay
2008,1,3,4,2003,1955,2211,2225,WN,335,N712SW,128,150,116,-14,8,IAD,TPA,810,4
,8,0,,0,NA,NA,NA,NA,NA
2008,1,3,4,754,735,1002,1000,WN,3231,N772SW,128,145,113,2,19,IAD,TPA,810,5,
10,0,,0,NA,NA,NA,NA,NA
2008,1,3,4,628,620,804,750,WN,448,N428WN,96,90,76,14,8,IND,BWI,515,3,17,0,,0
,NA,NA,NA,NA,NA
2008,1,3,4,926,930,1054,1100,WN,1746,N612SW,88,90,78,-6,-4,IND,BWI,515,3,7,0
,,0,NA,NA,NA,NA,NA
2008,1,3,4,1829,1755,1959,1925,WN,3920,N464WN,90,90,77,34,34,IND,BWI,515,3,
10,0,,0,2,0,0,0,32
2008,1,3,4,1940,1915,2121,2110,WN,378,N726SW,101,115,87,11,25,IND,JAX,688,4,
10,0,,0,NA,NA,NA,NA,NA
2008,1,3,4,1937,1830,2037,1940,WN,509,N763SW,240,250,230,57,67,IND,LAS,1591,
3,7,0,,0,10,0,0,0,47
2008,1,3,4,1039,1040,1132,1150,WN,535,N428WN,233,250,219,-18,-1,IND,LAS,1591
,7,7,0,,0,NA,NA,NA,NA,NA
Understand:
1.Inner join, we can see weather data is small enough to get into memory
, so let's start with map side join.
a.Add weather data as cache file.Use day, month and year as the join key
.
b.Use "Dest" column in flightdelays as filter, which will filter "Dest"
column in flightdelays is equal to "SFO".
c.Get the "SFO" from arguments in main().
2.Use Year,Month,DayofMonth as key,
use DepTime,ArrTime,UniqueCarrier,FlightNum,ActualElapsedTime,ArrDelay,
DepDelay,Origin,Dest,PRCP,TMAX,TMIN as value.
a.DepTime,ArrTime,UniqueCarrier,FlightNum,ActualElapsedTime,ArrDelay,
DepDelay,Origin,Dest from flight_delays1?2?3.csv.
b.PRCP,TMAX,TMIN from sfo_weather.csv.
3.Modify Year,Month,DayofMonth, ArrDelay as key. Custom output format.
4.Output dir is "task1", output file is text file, fields separated by
commas.
5.Reducer task is two.
avatar
y*u
11
这个是青蛙
avatar
w*n
12
接下来是两道原题:
两道题用到的参考数据是一样的。真实的考试数据一个文件有135MB,考试的时候没办
法打开看;这里提供的参考数据是对练习题的参考数据加以修改后的得到的csv文件,
但是数据结构和真实考试的数据结构是一模一样的,github地址是:
https://github.com/WileyWu12555/big-data-fun/tree/master/sample_data/2007_
2008_average_maximum
一题是朋友考试时的截图:
求平均值:
我们的解答代码 github 地址是:
https://github.com/WileyWu12555/big-data-fun/tree/master/src/flight1/average
/delay
另一题是我自己考完后凭记忆记录的题目要求:
求最大值:
HDFS系统中/user/horton/flights下有两个文件, 2007.cvs 和 2008.cvs (结构和上
面的附件第一题里的一样)
要求写一个mapreduce程序,实现以下功能:
1. 求出每个Arrival airport code中arrival delay时间最长的一个
2. 结果存放在 HDFS中的 /user/horton/task1下
3. 每条结果包含以下数据:
Arrival airport code, Maximu Arrival delay, Departure airport code, Year,
Month, DayOfMonth
4. 每个字段之间用逗号隔开
5. 输出结果按照2007和2008分成两个文件
6. 最终结果以Arrival airport code的字母正序排列
我的解答代码地址是:
https://github.com/WileyWu12555/big-data-fun/tree/master/src/flight2/maximum
/delay
avatar
R*l
13
与我小时候玩过的很像。
avatar
w*n
14
我朋友完全没有准备,是裸考的,也没有管结果,求平均值那题的代码是我们后来写的
,不确定对不对。
我考的是最大值那题,肯定是不对的,虽然能跑出结果来,结果看起来也符合题目要求
,但是由于看不到那个135MB的原始数据的内容,所以我的判断条件可能遗漏了什么。
官方明确说了不会告知没有考过的原因,但是告诉我他们的评判标准是代码和结果两方
面。
我目前能想到的唯一的出错可能是在Reduce部分给 int maximum 这个变量赋初始值时
不应该用 0, 而应该用 Integer.MIN_VALUE,因为有可能delay的值为负数。
https://github.com/WileyWu12555/big-data-fun/blob/master/src/flight2/maximum
/delay/Task1Maximum.java 125行
虽然之前考试用的哭胖免费考的,不过也花了两个月的时间准备,考挂了有点郁闷,有
点想自己掏银子再考一次,所以求助大神们帮忙看下代码,看有没有什么错漏。
avatar
a*l
15
很淡定的大青蛙

【在 y**u 的大作中提到】
: 这个是青蛙
avatar
T*x
16
我看了你的代码。我觉得没啥问题啊。看不出有什么问题。

maximum

【在 w*****n 的大作中提到】
: 我朋友完全没有准备,是裸考的,也没有管结果,求平均值那题的代码是我们后来写的
: ,不确定对不对。
: 我考的是最大值那题,肯定是不对的,虽然能跑出结果来,结果看起来也符合题目要求
: ,但是由于看不到那个135MB的原始数据的内容,所以我的判断条件可能遗漏了什么。
: 官方明确说了不会告知没有考过的原因,但是告诉我他们的评判标准是代码和结果两方
: 面。
: 我目前能想到的唯一的出错可能是在Reduce部分给 int maximum 这个变量赋初始值时
: 不应该用 0, 而应该用 Integer.MIN_VALUE,因为有可能delay的值为负数。
: https://github.com/WileyWu12555/big-data-fun/blob/master/src/flight2/maximum
: /delay/Task1Maximum.java 125行

avatar
s*u
17
蛤蟆不就是青蛙吗
癞蛤蟆才是蟾蜍吧
avatar
w*n
18
我也觉得没问题,唯一可能有问题的地方是在Reduce部分给 int maximum 这个变量赋
初始值时
不应该用 0, 而应该用 Integer.MIN_VALUE, 因为有可能delay的值为负数。
如果这个也不是failed的原因话,那只能是我没有交考试费 -_-!!

【在 T*******x 的大作中提到】
: 我看了你的代码。我觉得没啥问题啊。看不出有什么问题。
:
: maximum

avatar
a*l
19
蟾蜍 ,也叫蛤蟆,两栖动物,体表有许多疙瘩,内有毒腺,俗称癞蛤蟆、癞刺。在我
国分为中华大蟾蜍和黑眶蟾蜍两种。从它身上提取的蟾酥、以及蟾衣是我国紧缺的药材。

【在 s******u 的大作中提到】
: 蛤蟆不就是青蛙吗
: 癞蛤蟆才是蟾蜍吧

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。