DATASCI W261: Machine Learning at Scale

Week 2, Homework 2

Katrina Adams

kradams@ischool.berkeley.edu
15 September 2015


HW2.0: What is a race condition in the context of parallel computation? Give an example.
What is MapReduce?
How does it differ from Hadoop?
Which programming paradigm is Hadoop based on? Explain and give a simple example in code and show the code running.

A race condition is when a variable's value can be different depending on the order of completion of parallel processes. For example, if two processes access a shared variable at the same time, then one would overwrite the other (eg. both processes increment a variable, then the variable has been incremented by 1); however, if one process completes before another process accesses the variable, then the second process would act on the new value instead of the original value (eg. the second process would increment, the already incremented variable, resulting in adding 2)

MapReduce is a parallel programing model for processing big data developed by Google, in which mappers operate on chunks of the data producing key, vlaue pairs, which are sent to a reducer to be combined for the final results. Hadoop is a popular open-source implementation of MapReduce that includes a distributed file system and fault tolerance.
Hadoop is based on a functional programming paradigm. A simple example of a Hadoop program is counting words. The map is simply to emit each word in the data with a count of 1, then in the reduce, the word keys are combined and the counts are summed to get a total count for each word in the data set. This example is shown below.


In [148]:
# make directory for problem and change to that dir
!mkdir ~/Documents/W261/hw2/hw2_0/
%cd ~/Documents/W261/hw2/hw2_0/
!cp ../enronemail_1h_cleaned.txt ./


/Users/davidadams/Documents/W261/hw2/hw2_0

In [149]:
%%writefile ./mapper.py
#!/usr/bin/python

import sys
import re
from collections import defaultdict

# regular expression for extracting word tokens from email content
WORD_RE = re.compile(r"[\w']+")

# Word to count passed in as command line argument
vocabwords = sys.argv[1].lower().split(' ')

# input as stdin
for line in sys.stdin:
    
    # email content is in last column of input file
    linelist = line.split('\t')
    content = linelist[-1]
    # extract words from content
    words = WORD_RE.findall(content.lower())
    
    # emit (word,1)
    for w in words:
        print w+",1\n"


Writing ./mapper.py

In [155]:
%%writefile reducer.py
#!/usr/bin/python
from operator import itemgetter
import sys
from collections import defaultdict

# initialize word count dictionary
word_counts = defaultdict(int)

# input comes from STDIN
for line in sys.stdin:
    
    # get count from fourth column and increment total
    line = line.strip()
    word = line.split(',')[0]
    
    word_counts[word]+=1

# output word, count
for w,c in word_counts.iteritems():
    print w+'\t'+str(c)


Overwriting reducer.py

In [156]:
# Run mapper and reducer cells first to write mapper.py and reducer.py

def hw2_0():
    
    # change to problem dir and copy data into dir
    %cd ~/Documents/W261/hw2/hw2_0/
    !cp ../enronemail_1h_cleaned.txt ./
    
    # put data file into HDFS
    !hdfs dfs -rm enronemail_1h_cleaned.txt
    !hdfs dfs -put enronemail_1h_cleaned.txt /user/davidadams
    
    # run Hadoop streaming mapreduce with mapper.py and reducer.py
    !hdfs dfs -rm -r hw2_0Output
    !hadoop jar ~/Documents/W261/hw2/hadoop-*streaming*.jar -mapper "mapper.py 'assistance'" -reducer reducer.py -input enronemail_1h_cleaned.txt -output hw2_0Output
    
    # show results
    !hdfs dfs -cat hw2_0Output/part-00000
    
    

hw2_0()


/Users/davidadams/Documents/W261/hw2/hw2_0
15/09/15 20:06:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 20:06:27 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted enronemail_1h_cleaned.txt
15/09/15 20:06:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 20:06:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 20:06:32 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted hw2_0Output
15/09/15 20:06:33 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 20:06:34 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
15/09/15 20:06:34 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
15/09/15 20:06:34 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
15/09/15 20:06:34 INFO mapred.FileInputFormat: Total input paths to process : 1
15/09/15 20:06:34 INFO mapreduce.JobSubmitter: number of splits:1
15/09/15 20:06:35 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1154332465_0001
15/09/15 20:06:35 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
15/09/15 20:06:35 INFO mapred.LocalJobRunner: OutputCommitter set in config null
15/09/15 20:06:35 INFO mapreduce.Job: Running job: job_local1154332465_0001
15/09/15 20:06:35 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter
15/09/15 20:06:35 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 20:06:35 INFO mapred.LocalJobRunner: Waiting for map tasks
15/09/15 20:06:35 INFO mapred.LocalJobRunner: Starting task: attempt_local1154332465_0001_m_000000_0
15/09/15 20:06:35 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 20:06:35 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 20:06:35 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 20:06:35 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/davidadams/enronemail_1h_cleaned.txt:0+203985
15/09/15 20:06:35 INFO mapred.MapTask: numReduceTasks: 1
15/09/15 20:06:35 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)
15/09/15 20:06:35 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100
15/09/15 20:06:35 INFO mapred.MapTask: soft limit at 83886080
15/09/15 20:06:35 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
15/09/15 20:06:35 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
15/09/15 20:06:35 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
15/09/15 20:06:35 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_0/./mapper.py, assistance]
15/09/15 20:06:35 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
15/09/15 20:06:35 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
15/09/15 20:06:35 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start
15/09/15 20:06:35 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap
15/09/15 20:06:35 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id
15/09/15 20:06:35 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords
15/09/15 20:06:35 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition
15/09/15 20:06:35 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length
15/09/15 20:06:35 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir
15/09/15 20:06:35 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir
15/09/15 20:06:35 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file
15/09/15 20:06:35 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id
15/09/15 20:06:35 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 20:06:35 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 20:06:35 INFO streaming.PipeMapRed: Records R/W=72/1
15/09/15 20:06:35 INFO streaming.PipeMapRed: R/W/S=100/599/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 20:06:36 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 20:06:36 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 20:06:36 INFO mapred.LocalJobRunner: 
15/09/15 20:06:36 INFO mapred.MapTask: Starting flush of map output
15/09/15 20:06:36 INFO mapred.MapTask: Spilling map output
15/09/15 20:06:36 INFO mapred.MapTask: bufstart = 0; bufend = 345615; bufvoid = 104857600
15/09/15 20:06:36 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 25955056(103820224); length = 259341/6553600
15/09/15 20:06:36 INFO mapred.MapTask: Finished spill 0
15/09/15 20:06:36 INFO mapred.Task: Task:attempt_local1154332465_0001_m_000000_0 is done. And is in the process of committing
15/09/15 20:06:36 INFO mapred.LocalJobRunner: Records R/W=72/1
15/09/15 20:06:36 INFO mapred.Task: Task 'attempt_local1154332465_0001_m_000000_0' done.
15/09/15 20:06:36 INFO mapred.LocalJobRunner: Finishing task: attempt_local1154332465_0001_m_000000_0
15/09/15 20:06:36 INFO mapred.LocalJobRunner: map task executor complete.
15/09/15 20:06:36 INFO mapred.LocalJobRunner: Waiting for reduce tasks
15/09/15 20:06:36 INFO mapred.LocalJobRunner: Starting task: attempt_local1154332465_0001_r_000000_0
15/09/15 20:06:36 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 20:06:36 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 20:06:36 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 20:06:36 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@6e2c2652
15/09/15 20:06:36 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10
15/09/15 20:06:36 INFO reduce.EventFetcher: attempt_local1154332465_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
15/09/15 20:06:36 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local1154332465_0001_m_000000_0 decomp: 475289 len: 475293 to MEMORY
15/09/15 20:06:36 INFO reduce.InMemoryMapOutput: Read 475289 bytes from map-output for attempt_local1154332465_0001_m_000000_0
15/09/15 20:06:36 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 475289, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->475289
15/09/15 20:06:36 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning
15/09/15 20:06:36 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 20:06:36 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs
15/09/15 20:06:36 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 20:06:36 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 475286 bytes
15/09/15 20:06:36 INFO mapreduce.Job: Job job_local1154332465_0001 running in uber mode : false
15/09/15 20:06:36 INFO mapreduce.Job:  map 100% reduce 0%
15/09/15 20:06:36 INFO reduce.MergeManagerImpl: Merged 1 segments, 475289 bytes to disk to satisfy reduce memory limit
15/09/15 20:06:36 INFO reduce.MergeManagerImpl: Merging 1 files, 475293 bytes from disk
15/09/15 20:06:36 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
15/09/15 20:06:36 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 20:06:36 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 475286 bytes
15/09/15 20:06:36 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 20:06:36 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_0/./reducer.py]
15/09/15 20:06:36 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
15/09/15 20:06:36 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
15/09/15 20:06:36 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 20:06:36 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 20:06:36 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 20:06:36 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 20:06:36 INFO streaming.PipeMapRed: R/W/S=10000/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 20:06:36 INFO streaming.PipeMapRed: Records R/W=64836/1
15/09/15 20:06:36 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 20:06:36 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 20:06:36 INFO mapred.Task: Task:attempt_local1154332465_0001_r_000000_0 is done. And is in the process of committing
15/09/15 20:06:36 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 20:06:36 INFO mapred.Task: Task attempt_local1154332465_0001_r_000000_0 is allowed to commit now
15/09/15 20:06:36 INFO output.FileOutputCommitter: Saved output of task 'attempt_local1154332465_0001_r_000000_0' to hdfs://localhost:9000/user/davidadams/hw2_0Output/_temporary/0/task_local1154332465_0001_r_000000
15/09/15 20:06:36 INFO mapred.LocalJobRunner: Records R/W=64836/1 > reduce
15/09/15 20:06:36 INFO mapred.Task: Task 'attempt_local1154332465_0001_r_000000_0' done.
15/09/15 20:06:36 INFO mapred.LocalJobRunner: Finishing task: attempt_local1154332465_0001_r_000000_0
15/09/15 20:06:36 INFO mapred.LocalJobRunner: reduce task executor complete.
15/09/15 20:06:37 INFO mapreduce.Job:  map 100% reduce 100%
15/09/15 20:06:37 INFO mapreduce.Job: Job job_local1154332465_0001 completed successfully
15/09/15 20:06:37 INFO mapreduce.Job: Counters: 35
	File System Counters
		FILE: Number of bytes read=1162442
		FILE: Number of bytes written=2230627
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=407970
		HDFS: Number of bytes written=53013
		HDFS: Number of read operations=13
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=4
	Map-Reduce Framework
		Map input records=100
		Map output records=64836
		Map output bytes=345615
		Map output materialized bytes=475293
		Input split bytes=115
		Combine input records=0
		Combine output records=0
		Reduce input groups=5438
		Reduce shuffle bytes=475293
		Reduce input records=64836
		Reduce output records=5438
		Spilled Records=129672
		Shuffled Maps =1
		Failed Shuffles=0
		Merged Map outputs=1
		GC time elapsed (ms)=11
		Total committed heap usage (bytes)=609222656
	Shuffle Errors
		BAD_ID=0
		CONNECTION=0
		IO_ERROR=0
		WRONG_LENGTH=0
		WRONG_MAP=0
		WRONG_REDUCE=0
	File Input Format Counters 
		Bytes Read=203985
	File Output Format Counters 
		Bytes Written=53013
15/09/15 20:06:37 INFO streaming.StreamJob: Output directory: hw2_0Output
15/09/15 20:06:38 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
	32418
limited	14
entergyr	1
mcsherry	1
additionally	2
doubts	1
dynamic	2
externally	2
yellow	1
barraged	1
prefix	1
35782	1
invovled	2
railing	1
appetite	2
hate	4
forget	1
looking	3
fronts	1
founder	1
granting	1
electricity	1
turner	3
'chuck	1
locomotive	1
originality	1
345	1
ilug	2
koromah	2
saw	1
whatsoever	3
riedel	1
sibilant	1
sorry	2
diverted	1
homemakers	1
349	2
overpaying	1
merchant	5
plants	2
etringer	2
collaborate	3
legislators	2
risk	46
regional	11
distort	1
knelt	1
shoot	1
georgia	1
every	14
affect	2
multiple	7
four	8
school	2
'iccenergy	1
prize	1
exaggerate	1
customizable	1
ref	2
withers	4
companies	8
protest	1
xqirzd	1
convenience	1
casinos	2
299	1
indices	1
deadline	6
mongolia	1
sponsored	1
heading	1
subscription	10
cyberopps	2
charter	2
209318	1
force	5
leaders	1
tired	2
'jeff	1
consistent	1
bacon	1
direct	4
southernenergy	2
elections	1
tires	3
kevin	48
likely	7
attended	1
utilities'debts	1
hou	206
perfect	3
freehand	1
n	11
quite	4
even	16
established	3
errors	6
revised	2
hidd	2
integrity	2
selected	1
spoke	2
entergy	3
asia	1
succeeds	1
bonuses	4
faclities	1
above	11
conduct	2
supplier	2
bachelors	1
bharat	1
increasing	4
ever	5
consisting	1
told	6
textures	1
deemed	2
dryblower	1
showcases	6
whose	2
duns	1
mailings	2
intercreditor	1
affiliates	6
albuquerque	2
beck	5
108	1
china	2
possibility	4
humility	2
active	1
103	1
100	18
aren't	3
107	1
interne	1
celebration	3
borrowers	1
kistler	1
crespigny	2
forum	1
items	15
employees	7
changed	1
foolishness	1
oxymoron	1
credit	20
ect	382
specials	4
'njwa	1
advantages	1
aka	1
changes	3
wood	1
mutual	1
fantastic	1
ipps	6
mail	32
benedicta	2
horn'and	1
julie	5
explained	1
th	13
angrily	1
chaeap	1
feelings	1
brought	1
teco	2
pound	2
thursday	8
stern	1
perhaps	3
055	2
stand	2
classifieds	1
philip	1
slaver	1
receivable	1
derivatives	3
sexual	2
ore	3
reflected	1
7268	2
would	73
'underga	1
catchy	1
played	1
music	1
negative	1
trusted	2
cali	1
6207	1
com______________________________________________________	1
asset	1
passport	1
contratulations	1
danielle	2
type	12
tell	13
swap	2
breathe	2
main	1
setup	5
userconf	1
posting	1
'swbe	1
successful	17
brings	5
expose	1
tenacity	1
carmody	1
yahoo	7
award	1
aware	1
99	63
98	1
memo's	1
adult	3
excellent	4
90	3
92	1
95	15
blocking	2
97	1
circumstances	1
me	75
1990	2
mg	1
1992	3
join	10
room	3
1997	3
mb	1
1999	7
1998	2
mo	1
work	32
roof	2
worth	1
gxol	1
ere	1
mw	3
rohan	1
mp	1
ms	10
espcially	1
elbow	1
ernest	1
my	101
example	7
vicqodin	1
ghana	2
references	1
transition	4
recommend	1
indicated	1
give	17
2868	1
rabey	1
bennett	1
india	1
updated	1
553	1
currency	1
hormone	2
walsh	2
reviewing	1
986782	1
scheduling	4
premium	3
keep	21
world	9
absolute	2
ena	10
end	18
recovery	2
eng	1
provide	21
mouse	5
atreus	1
thousands	3
damage	1
machine	1
how	36
hot	1
hindering	1
low	9
opposite	1
lisa	2
answer	7
turk	3
indubitable	1
hundreds	2
trisha	1
grown	2
costed	1
rise	1
description	2
joel_rosel	2
825854664	1
containing	3
lump	1
therefore	7
davis	7
wrong	3
getthe	1
glandular	1
cankerworm	1
excited	3
siberia	1
purchase	11
vance	2
danny	1
'benewm	1
effective	11
recieved	2
appreciate	2
season	1
janie	1
baggage	1
maintain	2
used	11
south	15
ho	3
enter	7
democratic	2
entex	12
wind	1
operations	38
longer	4
valium	2
executed	1
iname	1
office	26
wound	1
golnaraghi	1
plushy	1
vary	1
expects	3
kickoff	2
warrant	1
ecarmst	1
workstation	1
'jones	1
london	4
persons	1
innovative	2
ien	2
spam	7
before	23
some	68
position	7
redhat	1
classrom	1
personal	12
screaming	1
trying	3
revenue	2
tactically	1
expectations	4
exhibits	2
pilkington	1
better	10
spoken	2
hm	1
production	8
compelling	1
ruanda	1
romeo	1
kollaros	1
clu	1
weeks	6
schmidt	3
emphasize	1
trials	1
eventually	2
coffee	5
bazzd	1
justperform	1
similes	1
press	4
weakness	4
comwww	11
incorrectly	1
accrual	2
we'll	11
break	4
modification	1
effects	1
lavorato	6
payback	1
bypasses	1
pike	1
rental	1
silver	1
bank	6
monadic	1
netherlands	2
alex	4
spigot	1
usage	4
windowsentities	1
fonts	2
arrested	1
l	12
magellan	1
skills	2
filling	1
affiliate	2
reasonable	2
each	27
flustrated	1
went	3
higher	4
375	1
side	2
bone	1
bond	1
development	13
lifted	1
puc	3
adobe	11
personage	1
woo	1
secret's	2
chirano	4
diane	1
solution	1
392	2
reader	21
literature	1
paulo	5
touched	1
hosted	1
ypfpb	1
aids	1
399	1
mandated	1
saturday	1
turn	3
dnb	1
merchants	1
forwarding	1
westward	1
network	1
traffic	10
god	3
tried	5
forhome	1
rx	1
forty	1
0281	1
content	13
adhesion	1
encourage	4
daniel	2
'travis	1
gutierrez	1
comprehensive	1
got	7
gov	1
strategist	2
dea	1
underwrite	1
arizona	1
workout	1
barrier	2
associate	3
rail	3
cholesterol	1
'davidyi	1
free	86
fred	1
versus	2
normet	2
enhance	3
which	47
cheeap	1
hand	5
249	2
acrobat	1
crowdbut	1
yard	2
enormous	1
ate	3
created	7
refugee	3
isp	8
luong	1
days	10
economically	1
creates	2
mackey	1
nighttime	2
josey	5
iso	8
incorporated	1
signature	1
'hoferc	1
transaction	5
incomeunlimited	1
speeds	1
user	8
size	5
eileen	1
appeals	4
nigel	1
features	6
grade	2
eclassifiedshq	1
52109	1
coding	2
primary	3
thereof	1
shy	1
hook	2
featured	2
another	15
miserable	1
clarity	1
wing	1
illustrate	2
priority	2
cheaep	1
rated	3
there's	2
service	48
damorgarjr	1
tyone	1
top	9
recruiting	3
1500	1
approximately	4
plentiful	1
needed	9
airs	1
master	3
listed	7
capitalisation	1
gilbert	1
john	21
profitbanners	4
listen	2
troubled	1
streets	1
enhancing	1
tool	2
serve	6
took	3
negotiating	3
036474336	1
intelt	1
task	2
serial	2
somewhat	1
shortly	1
willbe	1
spreads	1
begins	2
distance	5
congratulatory	1
theqgrefor	1
last	18
keyword	4
surrounding	1
hike	1
tree	1
rate	31
project	18
matter	6
classes	1
speaking	1
historical	3
knights	1
company's	3
feeling	3
quoted	4
stacey	4
acquisition	1
perspective	7
bridge	1
fashion	1
rac	1
rewrite	2
ran	2
ram	2
mind	15
mine	6
zaako	1
biwven	1
tips	4
talking	2
789118270	1
principle	1
seen	4
seem	3
strengthening	1
tells	1
ckily	1
affairs	1
gimg	1
strength	1
genuine	2
releases	2
convenient	1
responsible	4
hrice	2
windred	1
sound	3
contact	31
eiben	1
smaller'	1
forces	5
laughed	1
magnum	1
randle	1
uafn	1
residue	1
exactly	4
philadelphia	1
shall	9
weightwheezy	1
ebook	3
dial	2
cordes	1
enron's	2
swiss	2
involving	2
germany	3
responsibilites	2
letter	27
claims	4
stick	2
expanse	1
3359	1
morality	1
bradford	1
treasonous	1
peers	1
potency	1
richard	2
dol	1
emailing	2
doc	3
medical	1
camp	7
flow	8
dog	1
newcomers	2
possesses	1
points	3
delusive	1
enterprise	4
takegreat	1
entertaining	1
curio	1
consumer	5
sum	3
came	2
reserve	2
saying	4
icop	1
cotroneo	1
wealth	2
hunger	1
visitor	3
meetings	7
retire	3
mclean	1
nominated	4
ending	2
pops	2
'cenochs	1
participate	4
keywords	2
earth	1
tempted	1
bail	9
availability	2
woodwork	1
talks	3
busy	1
layout	3
judgments	1
dawn	1
louise	8
claude	1
delays	2
debts	2
ocd	1
sezgen	4
discoouunt	1
here	54
minimize	1
rich	1
763	1
folks	3
549	1
revolutionary	1
emphatically	1
stayed	1
do	40
mixture	1
establishes	1
triple	1
professionals	3
de	3
stop	15
dc	1
legs	3
alhaji	2
wallis	1
cat	2
u	3
cushion	1
despite	2
advertisments	1
scroll	3
net	33
volatility	4
wynne	2
'celias	1
earn	6
bar	1
yowman	1
countries	2
fields	1
reliant	4
bauxite	1
facilitators	1
method	1
415	4
bad	5
beneteau	1
release	1
movement	2
418	4
419	1
urgency	1
thanks	34
respond	8
attest	1
penance	1
decides	1
reread	1
fair	2
imitate	2
branding	8
'singleton	1
fattroglodyte	1
'john	1
spirit	2
decided	5
result	2
clem	1
christian	1
tommy	1
best	25
situation	4
brazil	6
03	3
00	30
01	24
capacity	2
07	10
04	7
05	4
lots	2
rare	1
away	9
09	21
calamity	2
connective	1
yet	5
reassigned	1
r	16
finger	1
cooperation	3
hopefully	2
drawn	2
amitava	4
neyeded	1
approach	2
unprofessional	1
involved	7
shults	1
hence	1
reiterate	1
men	5
credi	1
moviebuff	2
extend	1
adding	2
oxidation	1
literally	1
were	26
however	14
weekend	3
boss	1
783019	1
adage	1
we	162
retirement	1
ws	1
drew	3
extent	1
news	6
debt	12
xp	6
improve	1
suggested	1
cop	2
climate	1
referral	2
preferred	2
country	21
presccription	1
ncaa	1
heating	2
against	6
participating	1
today's	6
year	25
coe	4
iron	2
receives	4
brad	2
studio	2
contribution	1
argue	1
com	156
asked	3
negotiation	1
mysiteinc	4
presumably	1
gwen	1
tone	1
very	31
unclear	1
guaranteed	4
resourcestocks	1
way	10
directions	4
karen	1
259	1
initiative	3
disordersclump	1
path	2
250	1
trust	8
256	1
speak	7
conference	6
beca	1
targeting	1
sam	3
asks	1
basis	5
union	2
referendum	6
been	52
drafting	1
beneficiary	1
commission	3
64610	2
much	23
west	5
interest	12
100038	1
entered	10
dozens	1
dynamically	1
stinson	8
website	28
gerry	2
life	12
rather	6
families	2
deeper	1
attacked	1
drugs	2
mcf	2
concerning	8
republicans	2
search	4
joinder	1
wish	7
dave	9
craft	1
chile	1
child	3
aviation	1
worked	3
petteway	1
transco	1
161	1
chill	1
applied	5
exception	1
'jshorter	1
prestigious	1
tang	5
submissions	4
fallon	1
strangas	1
air	6
dept	2
near	5
neat	1
teachers	1
ccprod	3
stopping	3
aid	1
9434	2
balance	1
davenport	1
k	4
natives	1
millions	2
economics	1
9610	1
mexico	1
cano	1
is	247
dictate	1
it	162
5290	2
expenses	3
elmira	1
player	2
im	1
clinging	1
in	415
several	17
vendor	2
t	7
shift	2
ie	4
id	12
conn	1
if	107
1814	1
confirmed	1
recover	2
stella	6
perform	1
large	8
make	35
transporting	1
amount	7
shares	1
b's	1
damages	1
evaluate	2
fe_s	1
mime	1
czkkrxht	1
ambien	1
european	2
clicking	1
schumack	3
counterparty	2
cindy	5
thank	9
nim	2
unlimited	4
published	5
hang	1
managment	4
greeted	1
delight	1
grammar	1
documents	4
producers	3
kim	3
on	263
opportunity	9
greedily	1
adminder	2
kid	1
9291	1
kept	2
whereby	2
scenario	1
programs	14
she	18
charlie	1
thu	8
humble	1
cultural	1
doff	1
more	65
8859	8
client	1
greatest	2
melodick	1
wedeliverparties	1
802	1
the	1240
800	2
corporate	8
buchsbaum	1
left	5
arousing	1
learning	3
protocol	1
capitol	1
just	47
sentence	2
willing	1
photo	1
enjoy	2
eliminationstop	1
rush	1
ideas	6
quotes	3
'hans	1
via	12
identify	2
mechanism	1
human	13
macquarie	2
yes	7
sellinternetaccess	5
psychotic	1
succeeding	1
previous	7
shiip	1
alum	1
enters	1
tin	5
mix	2
nicolay	1
tenderer	1
had	20
intends	2
glencore	2
belongs	2
board	3
easy	16
southwest	1
ramupgradeable	1
east	1
keeley	2
opt	2
shoulder	1
jana	3
trista	2
osman	4
involuntary	8
online	20
disagreement	1
possible	17
6992	2
lengthen	1
possibly	2
boxes	1
background	9
performance	7
judge	3
highly	1
new	59
mayes	1
advanced	1
apart	2
desire	3
dignity	1
fioricet	1
59	2
58	1
gift	13
texts	2
bucolic	1
54	4
57	1
56	1
51	1
50	13
52	3
securities	5
55	4
private	5
offices	3
officer	3
night	4
squill	1
response	3
grizzly	1
towards	4
scout	1
surf	5
www	46
cowry	1
dean	1
crowd	2
'taylor	1
staff	5
flatter	1
successfully	1
8038	1
dead	3
oh	2
welch	1
offer	26
printer	20
hassle	2
election	1
escape	2
critique	1
gosnell	1
advertise	2
purposefully	1
txu	2
confusing	1
strategic	3
cede	1
total	8
attendees	2
rhine	1
for	369
bottom	2
priicce	1
notification	1
ica	1
normal	8
loads	1
eincomplete	1
comments	13
everything	8
squeeze	1
asking	10
colloquy	1
allocate	1
denied	1
420	1
423	2
422	3
christmas	16
participation	1
core	1
otc's	1
bold	2
novelties	1
subscriptions	1
marketing	28
cochilco	1
of	564
illustration	1
constructive	1
discount	1
issler	5
swings	1
corp	31
remunerate	1
upward	1
losing	2
freese	1
post	9
descendent	1
super	4
security	10
ssb	1
marketers	1
transalta	1
928976257	1
banked	1
hard	10
coral	4
citizens	2
accepts	1
o	5
o'neal	1
tendererlycopodium	1
dinner	2
ensure	3
banker	3
steadily	1
own	15
eight	2
byee	2
kyle	1
slightly	1
252050406	1
automatically	7
evelon	1
duke	4
raised	2
destination	2
managers	1
martensite	1
facility	1
samer	5
pushes	1
splitting	1
bound	2
bonnard	1
down	11
anheuser	1
sos	1
explain	2
raises	2
doctrine	4
amsterdam	1
frightened	1
often	9
giv	1
4748	1
gis	2
deal	15
whooping	1
sally	34
support	16
constantly	1
114427	1
6761	1
fight	2
senate	2
accordingly	1
joseph	7
stacy	1
authorized	1
fraction	4
jane	1
call	14
instructs	1
info'and	1
war	2
happy	4
fork	2
head	3
pcenergy	3
stage'in	1
form	11
diligence	1
happen	4
heal	1
fireworks	1
removes	1
lawn	3
oil	1
'ryanmcgeachie	1
pricked	1
economic	2
encarta	1
hear	3
elderly	1
229	1
syndicate	1
for'sponsoring	1
224	1
nodded	1
analyst	2
bernice	1
absent	1
congratulations	6
0643	1
full	28
markets	5
inside	2
morning	12
attached	8
works	11
tuning	1
until	17
crystal	2
catalyze	2
complications	1
benchmarks	3
attn	2
attl	1
436425795822	1
151	1
150	1
digression	1
moore	39
classic	1
stronger	2
paragraphs	8
proven	1
hungry	1
knives	1
dear	6
sometime	2
exist	2
promised	1
openpage	1
believable	2
annoying	1
distributions	2
archive	1
fraternal	1
physical	6
pipe	1
write	13
engines	2
solicitation	2
pre	3
floor	3
agreeing	1
na	3
stake	2
nd	3
loosening	1
actor	1
cliffhanger	2
flood	2
oppose	1
interested	10
role	18
unsubscribed	1
holding	1
digital	1
test	1
ns	1
nt	1
hoffman	2
realize	3
2500	1
62413	1
usd	2
alleviates	1
lollipops	1
trips	1
rat	2
put	12
081	2
felt	2
update	10
let's	3
walton	2
outback	1
fell	2
invested	1
maureen	5
professional	14
authorities	1
kcs	2
tracked	1
billion	6
grief	1
cheated	4
bullet	5
phone	13
assume	1
normally	1
moved	2
grading	1
94105	1
daily	2
settled	3
beds	3
loyal	2
safe	5
text	15
reception	1
time	44
'michael_huse	1
banners	1
precedent	1
others	4
songs	1
oblibgat	1
concept	1
japan	2
emove	1
strengthened	1
rob	2
global	41
people	38
focus	4
deliveries	2
leads	11
hris	1
manages	3
daytime	2
skin	1
lauri	4
commentaries	3
dextails	1
resourceful	1
hijacked	2
certainly	4
1949	1
litteneker	1
clarification	2
reader's	2
1942	1
dahlienweg	1
1941	1
father	4
1947	1
1944	1
1945	1
environment	3
0	6
charge	11
promoting	2
notis	2
marks	2
platitudes	1
jubilar	1
96	1
ride	2
816	2
gssgeomatics	1
advises	1
brown	3
supported	1
jauregui	1
we've	5
advantage	1
terminate	1
consolidation	6
choice	2
pompey	1
kaminski	11
pictures	7
lynch	1
entries	3
cook	3
ma	2
exact	2
'colliw	1
minute	4
cool	3
aggressively	3
perceived	1
foo	1
customer's	1
impressive	1
level	3
did	8
rights	4
orgoto	1
leave	4
item	3
excerpts	1
phillip	1
quick	3
guy	2
son's	2
round	1
refusals	1
bd	6
thoroughly	1
revolution	2
says	3
remitted	1
htm	2
injunction	1
discover	3
initializes	1
sign	4
sergeev	4
rita	3
cost	8
they'll	2
tm	1
run	2
bacterial	1
epam	2
'william	1
wondering	1
workforce	1
appear	7
bargaain	1
assistance	9
contracted	2
rm	1
pleased	3
current	9
300	9
annals	1
axel	2
521	1
goes	1
international	7
1016	1
ground	1
boost	1
529	3
alertness	1
8901_bd_shwc	1
junk	2
supporting	6
rhinopez	1
processing	8
transportation	1
submitted	1
alsdorf	1
michele	1
mr	9
wbom	1
tinned	1
understanding	9
water	2
hall	2
slow	3
apachi	1
mcbeal	1
groups	4
address	27
alone	2
monies	1
along	4
appears	3
change	16
benson	1
box	19
buck	1
thu's	2
hurtling	1
thirty	3
canadian	1
tracks	2
impacted	1
funded	1
strangulate	1
mx	6
prevatt	4
trial	3
women	3
hone	1
treatment	1
absenteeism	1
lamps	1
bob	7
male	3
ok	4
transact	1
431	1
winner	3
love	2
lasts	1
extra	7
pentium	1
merely	1
sincerely	4
ipp	2
jose	1
prompt	1
operational	6
mobil	1
pitchers	1
market	12
mscf	1
yourself	11
vastar	7
handled	2
working	10
generalizing	1
angry	1
mst	1
visit	29
epsc	1
precluded	1
intense	1
parties	4
entergy's	2
live	1
going	25
96006681	1
remind	2
stearns	2
memory	3
sylg	1
scope	2
australian	3
ca'	3
today	24
unwarranted	1
introducing	1
son	8
sharing	3
said	3
conductor	1
sessions	2
club	1
share	8
acceptable	1
curriculum	5
nguyen	3
fuel	1
visual	1
drown	1
beers	1
observations	2
monday's	1
riding	1
cases	2
isalso	1
effort	6
behalf	1
sleep	2
schaffer	1
servers	2
mclarney	2
car	5
originally	1
reflux	1
trevino	4
ult	2
believes	1
reviews	6
regions	6
'pete	1
quote	1
cal	3
believed	2
making	17
metal	1
trans	1
csikos	1
samarium	1
claim	3
crazy	1
months	10
strides	2
figure	1
spp	1
december	18
awesome	1
newsletters	4
carroll	6
agent	3
sample	6
heard	2
kainantu	2
prager	1
234	1
bgmlm	1
dennis	3
230	1
occur	1
quark	1
subconsciously	1
adobee	1
agendas	1
fortunately	2
stock	5
discussion	8
charset	8
jason	5
antoine	1
1	66
till	1
pure	1
plus	4
coleman	1
guarantee	5
afternoon	4
inputs	1
product	35
iteam	1
explorer	3
zxs	1
huge	2
may	26
overall	2
wonderful	1
aol	6
eighty	1
respective	2
149	1
sustainability	1
membership	15
produce	2
scratch	1
4500	2
restate	1
date	5
such	9
truly	1
guys	3
disqualified	1
unbelievably	1
man	5
stress	5
surfing	1
natural	7
neck	1
commodity	8
vanadium	1
ss	1
maybe	4
2086	1
ghz	1
st	3
q	5
inform	3
accelerated	1
so	60
deposit	4
imminent	1
sc	5
124	3
sa	4
pulled	1
toward	1
talk	7
125	2
exclusive	1
timotheus	1
words	8
globe	3
whether	4
webpage	4
exchanges	1
displayed	1
canary	1
entity	3
stability	3
course	11
lst	1
jimmy	2
tablets	1
engageenergy	1
cuts	1
statements	1
cold	2
still	12
weissman	5
blocked	2
ethic	1
glut	1
group	20
monitor	1
he's	1
apex	1
interesting	3
organisation	1
inferior	1
proposed	3
stupidity	1
decreases	1
readers'mind	1
forms	1
platform	2
coaching	1
continue	15
suspicion	1
unblocking	4
2152	1
farmer	5
policy	6
932	2
endless	1
into	36
texas	1
emigrants	1
correspondence	2
nom	6
employment	1
finance	4
disparate	1
matches	4
conversations	1
origination	1
aeopublishing	29
insomnia	1
processes	2
introduce	1
unavoidable	1
lunch	2
transmissions	1
qualified	1
nox	2
1953	1
half	2
dollars	7
feature	1
nov	4
now	29
discuss	6
barrow	1
martinez	1
execute	1
lindiwe	2
name	22
respectable	1
january	2
directories	2
possibilities	1
dycmpf	1
h	7
howl	1
entirely	2
quarter	1
kerb	1
weeks's	2
el	2
domain	5
en	3
eh	1
latin	1
fooxr	1
ee	2
ed	1
receipt	6
directing	1
prove	2
eb	16
breakthrough	1
involves	1
replay	2
phentermine	3
sponsor	4
entering	2
authenticity	1
girl	4
avoided	1
medication	1
adequately	1
3300	1
er	1
canada	4
living	3
shown	2
medications	1
793	1
9381	1
space	6
profit	6
furthermore	1
vein	1
harriman	1
increase	12
bailout	8
pamela	2
papers	2
emerged	1
internet	30
tidbits	1
formula	2
voluntary	1
receiving	5
'rsbaker	1
managed	7
ckgby	1
uwe	3
virtues	1
after	19
undercollection	4
daysor	1
cars	4
million	17
6614102	1
cart	2
loyalty	1
addtional	1
theinvestment	1
california	9
rebel	2
success	25
grandma	1
org	4
obligation	2
cough	1
remainder	2
card	5
care	9
marla	1
advance	4
training	9
bulleted	2
contemplation	1
comclick	1
language	3
resource	5
3011	1
honest	1
519	1
strange	2
regretful	1
place	20
dunns	1
routes	1
promotion	1
widow	2
cellulite	1
think	11
first	34
emotion	1
suppressant	1
initial	7
saving	1
8507	1
madam	2
acce	1
knudsen	1
mirant	1
zac	2
one	67
pting	1
williams	7
omission	1
long	17
directly	7
president	9
carry	1
calpine	2
message	20
custom	1
open	7
cpuc	3
honesty	1
city	5
little	9
chums	1
officials	1
district	4
efforts	2
fl	1
caught	1
'wisew	1
morayt	1
flutter	1
anyone	5
ebl	1
teacher	1
2	74
draft	2
freebie	2
spell	2
moates	1
friend	2
editor	3
exploring	2
eyes	2
impresses	1
mostly	1
that	220
ownership	2
reseller	1
memo	3
tuneful	1
eliminates	1
altra	1
released	4
michelago	2
hzriubp	1
review	12
attempt	1
uranium	1
copy	12
surged	1
appreciated	1
here's	4
11	14
10	44
13	12
12	73
15	25
14	33
17	19
16	5
19	8
18	16
require	3
summary	5
transferred	3
shakespeare	3
standing	6
future	14
discounnt	1
magnesium	1
venture	5
sera	2
cards	5
individualized	3
'steve	1
server	5
damned	1
transport	3
browser	2
and	666
lowest	1
addressing	1
illness	1
san	4
investors	1
craig	1
correction	1
power	21
argument	2
voices	1
1928	1
say	5
incredibily	1
deliv	2
exchanging	1
allen	5
sells	2
rea's	1
ffffa	2
any	76
anz	2
sat	1
publicity	1
offering	7
encompassing	1
general	5
anyare	1
answering	3
foreigner	1
aside	4
instructed	3
note	9
other	43
emphasis	1
potential	8
take	18
gibner	8
destroy	1
loczk	1
encouraged	3
padron	1
registered	4
channel	1
ultimate	1
201	2
200	3
begin	4
hunt	1
amiable	1
ruzika	1
investigations	1
printable	2
price	27
knew	3
resulted	2
paid	5
unmanly	1
visitors	2
assault	1
importantly	1
skinner	3
roxio	1
america	15
pages	9
yearno	1
icon	1
forever	3
operate	1
eprm	1
especially	4
rosalie	1
wacked	1
considered	1
retentive	1
average	4
later	12
drive	2
mrs	8
federal	4
bade	1
axe	1
link	6
senior	11
treats	1
salt	1
filing	11
repeatedly	2
shop	3
rating	2
shot	1
show	7
cheap	1
representatives	2
moderator	4
merchandisethat	1
zo	2
missss	1
aggressive	1
label	2
orgtrade	1
maine	1
fifth	1
cornet	2
forp	1
ratio	1
settanni	1
title	4
alexios	1
true	9
committee	2
thanking	3
enough	6
texture	1
short	8
examples	1
incessantly	1
only	32
explicitly	1
believing	1
developed	5
admixture	1
fort	1
211075433222	1
over	49
interstate	1
ges	2
info	8
4887_saa	1
contracts	12
assistant	2
diamonds	1
burton's	2
expectation	2
modules	4
quickly	7
bareback	1
sitara	3
cannot	5
nearly	1
gee	1
suggest	2
platte	1
'llittle	1
celebrate	1
homestead	1
closure	1
krishna	1
manager	8
ivernia	2
floods	1
ontacted	1
wednesday	6
fainted	1
across	10
naked	1
experience	17
paper	2
source	5
bombs	3
keyes	1
through	18
finishing	1
luo	1
steve's	1
925	2
husband	4
cashpromotions	4
salomon	2
randomly	1
brim	1
burst	1
variety	1
keyboard	2
relative	2
meters	3
college	3
us	49
inseminate	1
apologies	2
prilosec	1
surgery	1
com'	69
concern	1
fails	1
pennsylvania	3
mortgage	2
whiskey	1
crooked	1
harvey	4
equivelant	1
quality	15
repeal	1
forecast	1
cd	2
settingt	1
3	36
un	1
listinfo	3
between	7
33155	1
pest	1
reading	1
checks	1
verification	2
arrival	1
dhyngem	1
notice	3
infrastructure	1
august	1
useful	4
herod	1
'mperkins	1
screen	1
style	1
rapidly	1
jm	6
residents	1
jo	1
spare	1
______________________________________________________your	1
emotional	1
presas	2
article	3
spark	2
westerngas	1
come	19
ja	1
emigrant	1
dates	4
fit	2
efficiency	2
successes	3
many	24
region	6
according	2
contract	10
producing	1
pray	1
s	39
haunch	1
present	2
expended	1
senator	5
holders	1
delete	6
comes	6
nearby	1
among	7
var	1
maintainer	1
merry	2
tonne	1
color	16
deeds	2
rising	1
period	8
sampling	1
60	6
61	2
ii	3
epcm	2
64	1
3000	2
66	1
67	2
68	1
69	1
writing	7
technicalities	1
custody	1
second	4
save	6
dreamwaver	2
0011	1
subscribed	4
cares	1
stretch	3
schafer	1
keys	1
inclusive	1
informed	4
vacation	2
mark	8
breath	5
linktocash	1
deposited	3
softtwares	2
leadership	12
viag	1
hardly	2
earths	1
500	8
systems	6
630	1
direction	4
enable	4
bmf	1
convincible	1
sites	31
offered	3
persist	1
notiffiyved	1
xacnax	1
'pwarden	1
dramatic	1
trademarked	2
untouchable	1
skilling's	2
thing	13
andrea	3
2'00	2
davis'attempt	1
fishbeck	1
case	13
kathryn	3
myself	1
litterbug	1
caucasians	1
coordinator	1
these	50
consultant	3
sex	1
cash	18
premature	1
w	12
'five	1
1980	2
ongoing	2
fiducial	1
editorial	1
promising	1
curricula	1
gullweig	1
spotlight	1
heno	1
pro	2
conferences	1
superman	1
telephone	3
hemisphere	2
strain	1
khanna	1
good	23
cheapsoft	3
kincaid	2
accounting	5
davis's	1
property	2
frusco	3
'dfelsinger	1
worry	2
shenkman	1
different	5
31615304791	1
erroneously	1
author	4
7578	1
granted	1
same	12
check	3
villarreal	1
html	9
95394	1
reminder	1
epmi	1
unit	7
status	1
hrgovcic	5
extended	3
watchfully	1
hunter	2
assist	7
thousainds	1
drives	1
weed	1
cheers	1
devoid	1
respected	1
fruit	1
two	24
advertisement	4
wpd	2
changing	1
validate	1
weep	1
without	10
tradition	1
renewable	2
whelan	1
supports	3
sierra	5
sempratrading	1
charges	1
begin_split	1
no	52
replace	1
prriicegreat	1
lucky	2
users'group	1
unclaimed	1
pride	1
severe	1
costs	2
bolnisi	1
components	1
teddy's	1
coordinate	5
cialis	2
modem	1
implementation	9
bodies	1
summer	4
janet	1
peace	4
212	3
213	1
noah	1
being	14
lacrecia	1
clon	2
milestone	1
enrononline	3
young	1
actress	1
foot	3
griddle	1
helpdesk	2
greetings	1
harrison	2
ounces	1
suprervisagra	1
trina	1
speed	2
guides	1
weekly	3
announcement	7
doctoral	1
death	3
commentaryto	1
aqoj	1
kathy	1
application	4
thinking	1
undeveloped	1
everyone's	2
seems	4
enacted	2
desktop	1
6902	1
instrument	1
lets	1
quickens	1
perth	1
4	34
preferences	2
thoughts	2
struck	2
tuesday	3
ross	4
ami	1
around	6
easily	4
comhttp	1
options	2
assemblyman	3
discontinue	2
unnecessary	1
amy	2
than	32
kindall	4
detract	1
dubhe	1
accepted	1
disappointed	1
hornbuckle	1
pst	1
orleantraders	1
stage	1
macarthur	1
adams	1
christine	1
pounds	1
reduces	2
piece	1
6396	1
roll	1
discarded	3
benefit	10
hcokyovrdsprayz	1
apoligize	2
wyn	2
fully	3
served	1
dirtier	1
reduced	1
undercollected	1
dictating	1
couldn't	1
picture	4
backgrounds	1
moving	5
competition	2
presentation	1
ante	1
manufacturers	1
lobster	1
sherlyn	3
table	2
sen	1
intend	3
allocated	2
mustard	1
capability	3
regina	6
mood	1
adrianbold	2
chromium	1
noon	1
lend	2
recorded	1
myinputare	1
legal	3
earning	1
whitehorse	1
voice	6
critical	10
inject	1
provides	2
provider	3
moderate	2
willie	1
refer	2
measuring	3
mailto	11
process	13
welcome	2
assembly	2
scientific	1
business	62
asap	1
retains	3
flyers	1
communicate	2
broker	2
pts	1
utilities	19
1933	1
1932	1
1930	1
lcd	1
1936	1
3267	1
1934	1
1938	1
throw	1
earlier	4
brighton	1
847	1
aphrodite	1
central	3
840	1
interfering	1
industry	9
'richarddaniel	1
discussed	2
newsboy	2
ports	1
srs	1
journey	1
carlos	5
knave	2
act	7
getterscan	1
johnston	2
gregory	1
luck	2
backup	2
or	165
metaphors	1
op	4
prostaff	1
howard	14
outlook	3
locally	2
lycopodium	1
burning	2
communication	9
image	9
sql	1
blessed	2
fuohqjlsjcqp	1
hinsch	2
involvement	1
darren	2
determine	1
apologize	3
burton	11
financial	12
valuable	9
your	381
teddy	2
restless	1
37159	2
stomaching	1
forwarded	29
her	12
area	4
removing	1
strictly	1
distracted	1
ello	1
disposed	1
deadlines	1
sides	1
start	9
suzms	1
watched	1
income	4
lot	10
brazilian	4
slowly	1
valley	3
standard	3
materials	2
sotware	1
treat	1
freepicklotto	2
jones	2
western	6
egep	1
complete	4
terrific	1
stupid	1
regard	9
delayed	2
cabinet	1
curtain	1
promote	2
with	198
proposal	7
buying	1
faster	2
abused	1
pull	5
7168	1
fraud	1
arranged	1
romantic	1
proceeds	1
wholesale	15
riverdeep	1
wrinkle	1
mary	7
miguel	1
paces	1
organize	2
trading	29
politically	1
agree	3
glenda	1
detailed	4
engine	3
ab	5
money	35
ad	31
johnny	2
602	1
exhausted	1
ah	1
am	86
al	2
deep	1
an	76
examing	1
as	137
at	145
file	6
ay	1
ax	2
allocating	2
moves	1
attatched	2
fill	6
again	12
onerous	1
cabinets	1
coreldraw	2
want	35
idiot	1
credibility	1
premiums	2
field	3
establishthe	1
summit	1
5	34
netrepreneur	1
announcements	4
securitization	2
forcing	1
thousand	2
immunity	1
igh	1
gaining	1
hey	2
78	2
separate	7
students	4
eworld	4
dubuque	3
includes	1
gifts	2
herbs	1
vp	1
important	11
bullets	1
antivirus	1
coverage	3
serious	1
chris	1
funding	1
rob's	1
range	2
resell	1
towel	1
building	7
pitifully	1
pagemaker	2
consternation	1
assets	14
corel	4
spend	6
'priscilla	1
invest	3
why	11
869279893	1
websites	2
hello	6
here'underneath	1
posts	1
windows	12
corey	2
mass	3
profits	1
missouri	1
pinion	1
sportsbetting	2
original	3
all	111
liar	2
consider	4
chinese	1
v	7
caused	1
beware	1
graphics	5
dollar	1
none	2
month	17
783518	1
ceased	1
unblock	1
causey	7
34710	1
smoking	6
dish	3
follow	10
settlement	2
mining	7
children	3
rd	1
careful	1
tx	3
re	17
tr	2
opportunities	7
removal	1
pricing	4
oceania	1
program	7
chewing	2
painter	1
solicit	1
issued	4
road	2
government	7
pilot	5
crest	1
'taylorja	1
activities	10
fax	9
ium	2
dutchess	1
confidential	5
shut	1
far	5
horror	1
146907159	1
myinput	4
fat	1
civilizirano	1
personnel	7
novel	1
worst	1
krgp	2
reado	1
fall	2
'mcclankg	1
winning	3
ticket	2
existing	5
condition	2
track	3
mild	2
7675213911	1
unlike	1
deficient	1
issue	19
unattainable	2
developing	2
list	18
joined	3
transcanada	2
clemons	1
sang	1
sand	1
users	6
small	3
leone	5
anal	1
referred	2
clinches	1
exemptions	2
i'll	5
busine	1
palaeo	1
tel	3
edt	2
i'd	2
tea	2
paso	2
grabs	1
lack	1
unable	3
past	3
llc	2
nbi	1
consummating	1
design	9
masson	5
yoursuccess	2
pass	2
businessopps	2
further	9
attributable	1
investment	18
returned	2
cigars	1
conscience	1
stockhouse	1
____________________________________________________________________________________________________________you	1
transistion	3
stood	1
consumers	3
forestall	1
section	4
resume	3
eminent	2
abn	1
thickness	1
public	2
tanya	4
version	7
diaz	2
certificates	1
bedfellow	1
learned	2
single	4
guns	1
maryam	1
5000	3
'mmce	1
thursday's	1
christi	1
presence	3
klei	1
favourably	1
answers	7
nation's	1
hours	26
promoted	1
9489	1
killings	2
will	234
australiasds	1
excess	1
concluding	2
november	3
managerial	2
shows	1
verbry	1
publishes	1
pleasant	1
900	1
1848	1
colored	2
ahead	1
timesheets	1
stelly	1
908	1
compliance	1
allows	3
jackie	1
brutal	1
ngx	1
peaking	1
prior	8
airport	2
bestowal	1
tele	1
advertising	7
musically	1
pick	3
action	1
schott	1
ellendale	2
point	15
vic	2
flash	2
followed	2
mc	1
family	3
taxation	1
requiring	1
africa	10
textual	1
window	1
ask	9
semester	1
send	23
establish	8
estimate	2
legislator	1
ve	2
attendance	2
eye	1
proceed	2
answered	1
rmation	1
contains	4
rub	1
finally	3
vote	7
thimble	1
6	22
taken	2
branded	1
hurrah	1
minor	1
helps	2
flat	5
diamond	2
door	5
knows	2
loft	2
caboose	1
grabbing	1
redesigns	1
company	22
stable	1
problem	5
bank's	1
'jlopes	1
commenced	1
basically	1
impulse	1
particular	2
known	4
i'm	7
hurry	4
finalization	2
krill	1
glad	1
presumed	1
town	4
helped	1
keeping	4
33282	1
shared	4
pilocystic	1
hour	1
startbgmlmezine	2
cooler	1
forbearance	4
remain	1
paragraph	6
nine	1
sent	16
learn	4
facelift	1
chairing	1
dec	9
star	2
history	2
unknown	6
purchases	3
compare	6
finland	1
executing	2
challenging	3
impacts	1
division	1
rodriguez	2
powerquest	1
ps	1
accept	3
quadrangular	1
states	5
pushed	1
net's	1
minimum	2
prbolem	1
numbers	9
purchased	1
sense	3
station	2
beale	1
lifts	1
simple	10
filter	1
needs	9
wisely	2
court	4
goal	5
explaing	2
62163	1
plans	2
breaking	1
affectate	1
shipped	1
dismissed	1
everyday	2
murmur	1
johannesburg	2
calme	1
leederville	1
speeding	1
cst	1
33597	1
strong	2
rick	11
fp	1
simplicity	4
plant	2
ft	2
intended	1
optionscontrol	1
communicating	2
advice	4
damorganjr	1
brett	3
expenditures	1
rudl	2
reflect	1
minds	1
catalog	5
disable	1
director	6
blood	1
coming	5
fh	2
capitalize	2
'sallen	1
a	537
refuse	1
organization	5
susan	9
read	18
keywordcount	1
doctor	1
overnight	2
mislead	1
coal	2
sales	43
ego	2
fundamental	2
media	3
banks	1
pleasure	1
geographic	4
255326837	1
that's	5
toolbar	7
photoshop	3
rogram	1
'reason	1
barnard	1
don't	31
attitudinal	1
'ilydiatt	1
soon	9
tramadol	2
trade	25
held	6
already	13
scott	2
499	2
'dronn	1
replies	3
sempra	1
27049	2
uvd	1
esiear	2
fischer	1
24	27
25	4
26	5
27	6
20	20
21	3
22	8
23	4
misspelled	1
pcp	1
sale	10
28	10
29	10
alli	1
actually	2
late	5
resort	1
individuals	4
disclosed	2
bypass	1
selection	4
idirect	1
mounted	1
team	19
might	12
upping	1
argentine	4
dolls	1
pierre	1
tonai	1
malina	4
evening	3
return	8
77056	2
neaarby	1
ceo	1
smoker	1
mpkemyrxlpq	1
fior	2
oconan	2
mccullough	1
underground	1
foday	1
you've	4
signing	1
hundred	2
communities	3
vaughn	3
odin	2
association	3
instructions	4
bryan	6
holiday	3
ranen	1
rook	1
always	10
presented	1
statement	1
instruct	1
events	2
bless	3
courses	1
someone	11
val	3
positions	1
found	6
out	70
joel	4
isn't	3
notify	2
clamp	1
week	38
everyone	15
mental	2
weight	2
visually	1
generation	5
house	1
energy	43
fees	1
reduce	1
idea	5
tamarchenko	4
they've	1
dclemons	1
expect	9
todd	1
operation	2
beyond	3
insurance	6
stilled	1
really	7
ftp	1
148415904	1
creditor	1
missed	2
p	24
robert	7
since	13
outpacing	1
research	4
chartroom	1
aqmd	2
participants	2
health	2
7	32
premiere	2
print	1
get	72
keeley's	3
evaluation	1
occurs	1
frqee	1
reporting	10
pathetic	1
cmenergy	1
webmaster's	1
friday	6
horse	2
canyonu's	1
isps	3
chumming	1
difficulty	1
reason	6
base	4
styles	1
imaging	1
members	14
imagine	1
backed	1
randall	1
teach	1
herbalonline	1
beginning	4
generate	1
wall	6
retired	2
allocation	5
owners	2
benefits	11
launch	2
2575	4
offsite	2
tortoises	1
netnoteinc	6
american	2
harris	2
expecting	2
threat	4
twenty	4
scheduled	3
blush	1
travel	2
kaskaskia	1
copper	7
major	5
oilshale	1
dont	1
simply	5
encoding	2
feel	19
thereafter	2
number	16
whom	1
feet	1
patricia	4
talked	1
done	6
chile's	1
political	3
epenergy	5
slower	1
a'click	1
miss	2
kristin	2
goage	1
guess	1
php	3
973	2
leverage	1
script	3
automobile	1
gpg	1
generalities	1
was	68
least	12
passed	1
grandfathered	1
zadorozhny	4
assumption	1
calculations	2
gpt	1
rates	7
expanded	1
southern	1
voted	1
store	2
headache	1
mini	1
insure	7
selling	11
yjoou	1
himhe	1
relationship	6
relieved	1
coastenergy	1
mossel	1
transferring	2
xeni	2
immediate	2
veteran	1
stephanie	1
appreciation	2
treasurer	1
part	9
taught	1
word	9
authors	1
focusing	4
7358	2
9237	1
'jonesg	1
percentage	2
relieves	1
54804	1
king	4
financing	4
b	15
compliments	1
kindly	1
horizons	1
double	2
anticipate	1
aff_id	1
levels	2
outrageous	1
katamail	1
greg	3
2020	1
2753	1
myshoppingplace	4
lease	1
dana	1
traveling	1
ranch	7
takes	7
outstanding	4
well	25
urgently	1
888	5
stil	2
novak	1
steak	1
stalling	1
sentences	4
miller	1
dynamics	2
option	1
sell	8
wilson	2
bestwaytoshop	1
proliferation	3
dancing	1
trip	2
essentially	1
lin	6
efs	1
'stefkatz	1
also	56
100's	1
appellate	1
build	12
hgh	4
favorably	1
ancillary	2
commentary	18
preneur	2
professor	1
norma	1
liz	3
province	1
competencies	2
cemented	1
electric	1
lineal	1
yanowski	1
intervened	2
popular	2
'hal	1
thronged	1
reach	7
chart	1
77	1
76	1
75	5
experiences	1
'ctise	1
71	1
70	1
nothing	5
accepting	2
information	71
approved	6
strategies	5
39510	2
linkpaks	4
kg	3
mineral	2
samuel	1
seize	2
kk	1
clear	12
sometimes	1
cover	2
tangible	1
traditional	2
ext	3
amazed	1
1687	1
1689	1
valid	4
institutions	1
joining	4
science	1
despise	1
ugh	1
particularly	3
rebels	2
gold	14
journeys	1
obligations	2
commissions	2
rto	1
doctors	2
systemslogical	1
midwestern	1
booze	1
session	1
businesses	4
sandton	2
delphi	1
carefully	4
stores	6
headlines	4
font	3
fine	2
find	5
faces	1
completion	3
cell	1
indicator	1
believe	14
regulations	3
delinquent	1
copyright	7
disordersshrink	1
unrealistic	2
ruin	1
hope	9
distributed	1
vision	1
moments	1
viagra	5
generators	2
betray	1
pretty	4
equity	5
8	27
bendickson	2
hourhelp	1
didrex	1
clemmons	1
yourmembership	2
toronto	1
his	39
founding	1
herem	1
gratis	1
manual	2
express	4
kind	7
wash	1
famous	1
somehow	1
cote	3
rest	5
closely	5
competing	3
critically	2
accomodates	1
him	9
merchandise	3
target	9
resolve	4
oxx	2
sources	7
hplr	1
millenium	1
wynpublishing	1
remove	6
pbem	1
banking	4
multilanguage	1
common	2
allocations	4
cre	1
hype	1
x	19
aspermont	3
hplc	1
rear	1
wrote	3
consciously	1
nas	1
set	15
art	2
achieved	1
cashpo	2
312	1
activists	1
uses	1
delux	1
azurix	10
signups	1
see	34
individual	8
prosper	3
are	169
emai	1
chambers	1
expertise	8
ark	1
arm	1
locals	1
pacific	3
learns	2
threats	2
prescriptions	1
switchman	1
guinea	1
7247	1
kvie	1
_nextpart_001_0080_01	1
with'center	1
walpole	1
unions	2
won	1
solmonson	1
use	43
pc	5
architect	1
hold	3
numerous	1
law	5
wide	1
available	23
seeded	1
korea	1
recently	5
creating	2
missing	1
initially	4
sold	2
attention	3
succeed	3
scuttle	1
opposition	2
skilling	4
fame	3
'gary	1
wanting	4
remaining	3
legislature	9
both	15
c	17
rennie	1
improved	5
mega	2
pdx	1
oversee	3
obligationin	1
wouldn't	4
barely	1
sensitive	2
connection	3
became	4
goodmorning	2
annie	2
forgotten	1
reply	5
mean	1
whole	2
rodgers	1
sink	1
dutyfreesoft	1
liked	1
xent	2
tungsten	1
jeff	5
reasons	1
sweet	3
loan	2
elses	2
community	21
except	1
inlcuding	1
stove	1
pinnacle	1
ravi	6
likes	1
shutdown	1
linux	4
written	6
slots	1
throughout	4
sergeev's	1
lender	2
worthless	1
described	2
publishing	2
kimberly	5
monthly	2
help	16
create	13
creativity	1
due	8
enron	122
strategy	2
geoffrey	1
reduction	4
nicki	1
complicated	3
pg	7
pibrochs	1
brick	5
softwares	1
meeting	18
po	1
pl	1
pm	37
firm	5
generating	2
awaking	1
flight	1
champion	3
azepam	2
boy	2
niles	3
what's	3
5022	1
gas	34
great	20
bmlm	4
else	2
moment	3
281	1
whatever	4
409055	1
socal	4
1864	1
knowlton	1
demand	3
prices	8
ways	10
hillis	1
nrw	1
unnecessarily	2
964	2
965	1
crenshaw	13
unify	2
look	14
makecashonline	1
solid	1
8561513507	1
straight	4
bill	6
gxxu	1
batch	3
governor	5
technical	3
while	14
substantial	2
cagey	1
match	2
evaluating	1
error	8
fun	4
hulmeville	1
real	13
larger	3
century	1
cents	7
annuallouy	1
raise	2
toilet	1
reads	2
itself	3
reports	1
procedures	3
ready	5
rid	1
leaving	2
payers	1
d'arcy	7
aches	1
barney	3
878	1
grant	6
migraine	1
877	3
belong	1
mailing	3
orders	1
shorter	1
lilly	1
utilities'transmission	2
economy	1
copying	1
grand	3
9	39
products	23
advise	2
ray	4
headachesmerle	1
conflict	1
cargill	2
anonymise	1
ward's	1
893	1
tower	2
forced	1
bonus	5
assignment	1
overseer	1
yesterday	7
times	5
desks	2
steps	1
001	2
000	52
impede	1
purpose	6
shirley	18
birch	1
assortment	1
yours	3
nickname	1
janice	1
recent	3
buybacks	1
early	8
lower	1
myers	1
daren	7
database	1
rules	1
seward	1
depending	2
anybody	1
analysis	3
obviously	4
person	16
gilchrist	1
edge	1
chronicles	1
auditor	1
sherri	2
savvy	1
entry	1
8919	1
self	3
cryogenic	1
know	41
things	8
bondholders	1
nepco	1
2963	1
lottery	6
bytesize	1
settlements	2
removed	4
competitive	3
reviewed	4
hje	1
netwww	1
buka	2
questions	36
redesign	2
nowthe	1
alternative	1
prevent	1
soundmax	1
profitable	1
lit	1
execution	1
same'setbacks'	1
tablet	1
readers	2
rebecca	2
percent	1
advertisements	1
recognizing	4
andorra	1
dhar	4
internal	9
parents	1
location	11
sydney	2
problematic	1
input	6
motero	1
prominent	2
operators	3
brainstorm	1
chairman	4
customers	3
australia	10
motivating	1
amended	1
finalize	1
format	3
674	1
big	9
bid	1
advocate	1
results	6
wives	1
finding	1
game	4
workable	1
biz	4
3130	1
foreigners	1
herewe	1
necessary	8
bit	2
tarrif	2
projects	2
formal	1
listmaster	1
webmail	1
ambrose	1
d	25
lemelman	1
should	27
afirst	1
snowboard	1
ees	10
collect	2
arthur	1
'harry_wijsman	1
indication	1
crawled	1
ivan	2
suppliers	6
licensing	1
methods	1
gist	2
sue	3
absolutely	1
spring	1
fathers	1
creation	3
instruments	1
back	26
ozarka	1
urgent	5
lips	1
added	2
mighty	1
accelerate	1
sight	1
mirror	3
newsletter	23
ourselves	1
brent	2
gracie	2
delivered	5
gradually	1
contacts	1
pet	1
decision	2
though	6
audience	10
per	10
bannerco	4
owns	1
eliminate	3
slash	1
innovation	4
tear	1
teosrest	1
minimal	1
either	9
cgi	5
be	221
tilts	1
limitless	2
eating	2
35615	1
bc	1
china's	1
tlapek	5
martin	7
continuing	1
agreement	16
306	2
step	2
fee	6
bp	3
concealed	2
br	2
bs	2
from	134
carol	1
by	142
russell	1
faith	1
pipeline	3
goods	1
anything	11
most	31
completing	1
firing	1
ids	1
must	21
papua	1
beetcn	1
nightgear	1
beans	1
together	7
jsp	3
complimentary	1
consequently	1
block	5
plan	17
seeing	1
computational	1
significant	4
blainey	1
intl	2
hemingway	1
within	25
qualities	1
iowa	1
services	16
appropriate	3
frames	1
lesson	5
pillsburywinthrop	2
kay	5
bankruptcy	20
retarding	1
shanbhogue	5
'sdba	1
valued	1
insider	2
spending	1
question	11
fast	4
accountability	1
ordered	6
trader	4
vendors	1
consultation	2
regarding	2
'bcli	1
forward	11
'kenny	1
analyze	1
upload	1
etc	9
files	2
himself	1
remember	13
invite	6
sds	1
ditch	1
discoount	1
atop	1
icet	2
'bredd	1
copartnery	1
berkovitz	2
properly	2
crank	1
abidjan	2
filed	6
hopes	1
line	21
pain	2
themselves	4
raising	1
omaha	1
directed	1
hair	1
travelling	1
uz	1
angels	2
implementing	1
requesting	1
up	46
seven	5
par	2
clips	1
mobile	1
generalize	1
exploration	2
roman	4
uk	4
faded	1
highlight	3
supposedly	1
z	1
steeves	2
called	3
tithable	1
powered	3
shandong	1
units	4
associated	4
worthwhile	1
armstrong	2
roared	1
defined	1
m	23
testimonials	2
influence	2
9100	1
package	4
char	2
bjwl	1
engineering	2
cure	2
home	18
organizational	1
formally	2
lyn	7
timekeeping	2
wants	2
snhezkjzhisbpjhgx	1
supportive	1
d'souza	1
amounts	2
'randy	1
ecole	1
'richard	1
joao	2
afford	1
politicians	1
reputation	2
functionality	4
carrera	1
bmar	1
gra	2
department	1
wishing	1
nice	3
dale	1
explaining	2
draw	5
titles	3
energetic	1
reportedly	2
gross	3
reservation	1
problems	5
prepared	2
helping	3
innovatus	1
moderates	2
9213	1
score	1
desert	1
structure	5
ago	1
land	1
e	59
vice	9
valuables	2
dvd	1
age	5
required	2
walked	1
microsoft	6
2002	2
2003	18
2000	29
2001	29
floe	1
2004	15
2005	3
wording	1
requires	1
having	6
provided	3
once	8
sector	3
gs	1
oxley	3
hint	1
urg	1
cynthia	1
resistance	1
jturco	2
cobalt	1
steve	1
012	4
wallow	1
gb	1
during	9
go	11
instantaneous	1
disintegration	1
delegating	1
issues	17
seemed	2
graves	2
concerned	1
verypowerful	1
rewarding	2
relating	2
mower	1
topic	2
davis'end	1
ehronline	1
weather	2
suite	5
gravel	1
one's	1
resources	21
uploaded	1
pay	5
confirmation	2
assay	1
paying	3
outside	3
ague	1
continues	3
713	6
schedule	6
foretell	1
stocker	1
under	22
7517_bybtb	1
pun	1
specific	7
drinking	2
continued	3
minerals	4
arrange	5
timely	2
entire	2
088889774	1
transmission	10
lynda	1
button	1
tokyo	1
michael	8
colors	1
wait	2
deals	3
race	1
min	2
zero	4
relation	1
inspection	1
noted	4
mm	1
disclaimer	1
pleas	1
smaller	6
you'd	1
their	40
obtained	1
599	1
zolam	2
alpra	2
sap	16
linda's	1
boots	1
filled	2
timshometownstories	3
located	4
layouts	1
youcan	1
hyde	1
booth	1
uncomfortable	1
download	1
copenhagen	1
acid	1
carlo	1
click	39
depression	1
victor	2
orrick	1
edison	3
bdf	1
confided	1
showcase	20
pipes	2
probably	7
slgavjmoqq	1
expressed	1
networks	6
access	12
consistently	2
experiment	1
then	28
capital	6
cele	2
technology	3
geomatics	1
mediums	1
marketer	1
can	89
body	9
impact	3
449	1
mauricio	1
borlan	1
lee	1
exchange	11
fln	1
commercial	18
delivering	1
following	27
let	32
healing	1
licence	1
meet	9
chokshi	1
fifteen	1
2497	1
extreme	1
pinnamaneni	4
waste	1
39	5
38	5
talent	2
northern	3
credits	1
receive	12
32	12
31	4
30	20
37	1
36	2
35	2
34	4
headline	2
tantalum	1
642	1
645	2
martina	4
defeat	1
opinion	5
implement	1
makes	5
'larry	1
'don	1
sanibel	1
sheila	4
examining	1
formulated	1
addresses	5
clark	1
heart	1
clare	1
win	18
manage	3
qualityproducts	1
reclaimers	1
baskets	4
332	1
order	43
addressed	1
performer	2
street	1
names	7
jpxdltmuk	1
duck	1
apply	4
sugar	3
singing	1
spent	4
rizzi	2
confidence	1
exciting	1
feb	3
secure	3
mid	3
tomorrow	5
next	27
few	12
duplicate	1
doubt	3
examination	1
cheeky	1
expanding	1
butler	1
toy	2
means	6
expressway	1
'msessa	1
chip	1
hydro	2
oo	6
recipient	2
denys	1
upcoming	1
datacenter	1
ecom	1
didn't	4
factor	1
priices	1
payne	2
sunrise	1
habitually	1
sharply	1
to'blow	1
baby	2
informative	1
billed	2
chinamen	1
reflections	1
pathos	1
jirapliegao	1
iain	1
customer	23
nominations	1
account	35
roibot	3
f	1
this	261
challenge	1
clients	1
hydroxylate	1
chancesto	1
4073	1
anywhere	3
island	2
fulfill	2
mesopotamia	1
personality	4
lagars	1
control	8
scams	1
wishes	1
reserved	3
links	30
providers	2
invoices	1
favorite	7
producer	1
whalley	3
sokolov	4
promotional	2
high	15
effectively	5
proxy	7
hotmail	2
pulling	1
something	8
documenting	2
hit	2
getyour	1
cliickk	2
zk	1
confuses	1
dwr	3
hesitate	4
united	5
guru	2
enron_development	2
meanwhile	3
sillily	1
arrangement	2
delay	1
brian	1
responsibilities	7
winners	2
forest	1
responsibility	9
zesto	10
'swidner	1
those	15
xm	1
personally	1
greatly	1
profile	3
lamb	1
buildings	1
endorsements	1
neighbor	1
attend	7
sir	2
relates	1
fran	2
highs	1
await	3
them	56
fluid	1
heartburnwestfield	1
abuse	2
jonathon	1
militarism	1
requirements	5
spelling	3
overgaard	1
highlands	2
nickel	4
light	1
944	1
sit	1
lines	1
chapman	4
gigabyte	1
processor	1
commodities	1
chief	4
advocates	1
encyclopedia	1
bussell	1
allow	12
americ	2
subsequently	1
software	12
lounsbury	1
counted	1
houston	13
six	3
lenders	4
'dkohler	1
stratagem	1
train	7
move	7
engineergeodetic	1
meter	11
report	14
mcmullen	1
including	16
looks	5
triassic	1
134	1
mentioned	4
boosts	1
industries	1
anonymously	1
wr	1
inlet	4
ginsu	1
chosen	4
guerrilla	1
nostalgia	1
labor	2
previously	2
lu	5
choose	4
'prez	1
orange	1
bye	1
spot	5
setting	3
lx	1
originator	2
physicians	1
designs	4
tears	1
greater	1
pangs	1
citrus	2
washington	1
outlined	1
material	1
kish	1
acrobaat	1
daw	1
hands	2
front	3
impaired	1
liquids	1
cage	1
day	22
presidential	1
articles	2
february	9
glaspie	1
edit	11
university	1
identified	1
priice	1
wugn	1
arlene	2
morris	3
lingerie	2
mode	1
truth	2
phonetic	1
accompanied	1
identifies	1
bills	6
freeonline	1
inbox	1
mitral	1
eastern	1
activate	4
doing	6
nommensen	1
706	2
gary	6
700	3
hurdles	1
related	2
703	1
1935	1
89	1
thirteen	1
exceeded	2
82	1
our	119
80	5
81	2
satisfied	4
87	3
special	14
ebooks	1
category	2
ondarza	1
matt	1
'	3
twice	2
stentofon	1
marketability	2
rev	2
include	12
oriental	1
term	8
utility	8
cause	1
integrated	2
red	2
glover	1
584	1
dictionary	1
phrasemake	1
frank	1
godly	1
recommendations	4
payroll	5
transfer	12
attending	1
completely	2
confirmations	5
volume	9
'blong	1
van	3
anyhow	5
chatham	1
likelihood	2
ipos	1
receipts	1
verify	1
drowning	1
river	2
ezine	4
angelova	4
g	31
concerns	4
phrases	3
could	18
rushed	1
diminished	1
david	18
conversation	1
length	1
cures	1
ycon	2
qualification	3
ltd	2
busines	1
stated	2
parallel	1
retail	4
facilitate	4
anita	2
designed	5
insane	2
secured	1
there	54
'doug	1
notes	1
third	3
pgm	1
powerful	7
owned	5
agouti	1
krishnarao	5
improving	1
uuz	1
submit	10
practices	3
owner	2
reached	3
blows	1
noticed	1
ihf	1
traders	1
owning	2
legislative	1
doesn't	9
management	51
reference	2
privacy	6
nomination	3
sellens	1
they	60
system	13
relations	3
cinergy	1
overwhelm	1
attack	1
29155	1
maidens	1
stroock	1
intelligence	1
wardsgiftshop	1
norton	2
waggons	1
final	6
beard	1
interests	7
stars	1
sharpens	1
completed	2
acquire	1
txuelectric	1
rsa	1
lists	2
environmental	1
targeted	11
regards	7
unsubscribe	16
too	10
helpless	2
wanted	6
july	2
chisholm	1
commence	2
outline	2
nowbetterthis	2
liquid	1
pursuing	1
split	1
bother	1
riches	1
bed	1
rosenfield	6
roberts	9
compensation	2
num	1
flynn	1
assays	1
sr	1
ber	1
visited	1
providing	6
creditors	4
exhibit	5
rtol	1
wsc	1
viewer	1
cohen	1
partnership	1
putpeel	8
interrupted	1
we'd	1
netherland	1
manganese	1
have	170
close	5
need	52
manitoba	1
frevert	3
apparently	2
clearly	1
continents	1
necessities	1
extremal	1
'kelly	1
afraid	4
dishes	1
eops	1
recap	3
watson	2
able	14
empowered	1
hangover	1
hr	12
321	1
financials	1
rossman	12
funds	10
woolgar	1
linda	4
divert	1
subject	53
dcoit	1
hp	1
persistence	2
'randall	1
worldwide	11
02	19
miningnews	8
unless	5
unocal	1
rw	1
who	27
techniques	5
thorns	1
courtesy	1
montana	1
connected	1
ht	4
tall	1
device	1
06	21
gunners	1
expired	1
class	2
anonymizer	1
fabaclbo	1
amortize	4
placement	2
pressured	2
url	3
neighboring	2
inappropriate	1
request	14
disease	1
face	1
looked	1
you'll	5
hi	2
brex	2
north	12
occasion	1
trafficmultipliers	1
its	27
08	22
fact	8
goals	1
ecomog	3
impression	3
emerging	2
currently	16
brenda	1
chances	4
please	84
agreed	2
admin_magnumo	1
scotty	1
anyway	2
bring	1
democrats	3
reaching	1
telling	1
vicodin	1
fear	4
bybb	1
supervisor	4
'bjeffrie	1
principal	3
'connie	1
partners	4
envy	1
pause	1
based	15
knowledge	4
tire	1
bodyfrankfurter	1
micros	2
'glen	1
ngo	2
pushing	1
controls	6
employer	1
jan	3
planted	1
anyone's	2
netsbestinfo	2
rvsq	1
combo	1
employee	6
employed	2
sengupta	1
he	46
local	6
achieve	1
melissa	3
meant	1
7394	1
handle	1
listened	1
bonds	6
succeeded	1
zaak	2
999	3
hire	2
bear	4
120	1
joint	1
122	1
123	3
3405	2
3404	1
126	2
coordinating	1
timing	1
illustrator	2
exultant	1
edison's	1
generalist	1
areas	3
gray	1
evolution	1
sounds	1
tobacco	2
shopping	5
encounters	1
eyebrow	2
tuned	1
peel	2
felipe	2
aec	2
stuff	4
'repling	1
processed	2
tricky	1
protesting	1
lamproite	2
won't	5
fixed	1
gibson	1
view	11
btu	2
europe	1
requirement	1
official	1
'jnexon	1
frame	1
screwball	1
module	1
freeze	3
edition	5
computer	6
multipart	1
desperate	1
ebs	1
terms	5
reversed	2
responses	8
closer	1
phases	2
puts	1
stats	2
wa	2
has	66
snooping	1
clearing	1
nature	2
below	16
mclafferty	1
superb	1
2666	1
favor	4
state	30
convince	2
closed	1
niestrath	1
progress	2
boundary	1
gemstone	1
email	46
hash	1
bought	3
'tgary	1
massey	1
ends	1
george	9
ability	2
opening	4
amadol	2
deliver	1
freelinksnetwork	4
amex	1
job	3
takeover	2
queensland	2
joe	1
key	8
intermediary	2
approval	1
precious	1
configuration	1
swift	2
distribution	3
jon	1
tejones	2
restrictions	1
figured	1
never	7
site	59
taking	4
vasant	5
sponsorship	9
drug	1
pulp	1
assure	4
forthis	1
streams	2
claiis	1
stratton	1
cernosek	1
rodney	1
safely	2
ridiculous	1
jersey	1
otherwise	1
cj	5
jim	3
co	5
huang	4
gone	1
cc	40
34357	1
ca	3
wonder	2
brennan	2
running	7
subscribe	7
taylor	3
cs	2
respect	4
'dmao	1
cp	1
735670	1
2807	1
600	1
amigo	1
trunk	2
mailman	3
internally	2
crapbedspring	1
addition	5
it's	30
holidays	2
charts	2
cent	1
731	1
offers	2
growth	4
agreements	2
olson	2
certain	1
738	1
hottest	1
columnar	1
suggestions	5
killed	2
yesterdays	1
tarrin	1
mike	11
neuweiler	2
controlled	2
received	5
lock	2
609	1
vince	17
dfur	1
concernig	2
1200	2
5555	2
reliantenergy	3
finished	6
ensuring	2
bull	1
hme	1
fellow	1
zimin	5
6484	1
homes	2
factual	1
couple	2
survey	3
discretely	1
overuse	1
plain	4
paidtosurf	2
appearance	2
examine	3
value	11
specifically	4
persists	1
secrets	5
readies	1
hillmancarthage	1
usb	1
fault	1
hubs	3
intranet	3
instantly	2
screening	1
thunder	1
surfola	4
supply	4
xpress	1
soap	2
nero	1
here____________________________________________________________________________________________________________be	1
almost	3
vi	2
murphy	1
vzxoaxqhg	1
thus	1
non	5
wife	3
hardware	1
savings	1
arrangements	3
optimistic	1
lifetime	1
claimed	1
partner	4
com______________________________________________________today's	1
stands	1
terrorist	1
impossible	1
generic	6
solely	1
began	6
administration	3
cross	3
intra	1
member	21
thrid	1
when	32
parts	1
digging	1
largest	2
hendricks	2
party	3
upgradeable	3
gets	3
takriti	5
privileged	1
difficult	5
ezine______________________________________________________	1
killer	1
http	65
raymond	7
solved	1
absorb	1
conceived	1
upon	9
effect	2
forecasts	2
ion	1
started	3
123395	1
emeet	1
kaolin	1
vault	1
frequently	1
toll	3
laborious	1
judgment	1
lobby	1
francisco	1
kimberley	3
audit	3
valeria	1
sap's	1
off	8
center	12
mention	3
i	245
adapted	1
colour	1
incredible	1
desmeules	1
banging	1
nebulous	1
thought	2
procurement	2
lagrasta	1
vincent	5
corporation	4
odlx	1
audio	2
thuraisingham	6
drawing	5
ph	3
restore	1
carrie	1
subscribers	1
less	20
increasingly	1
oak	1
accurate	1
executive	6
domestic	1
obtain	4
saave	7
detail	2
not	125
voting	2
advertised	1
years	22
where	13
paul	2
keen	1
'scampbell	1
coordination	3
to	952
turned	1
web	23
sankoh	3
adr	1
ads	5
allay	1
density	1
officially	3
investor	1
baccarat	1
smith	7
deposits	2
capabilities	1
designl	1
arrest	4
add	12
gmx	2
attractive	2
kwh	2
69545	1
tax	1
adm	1
accomodate	4
kick	1
divided	1
resolved	1
washing	4
amb	2
akkabay	4
increased	5
disappearance	1
checking	4
fyi	6
teleseminar	2
fyl	2
vs	2
263	2
increases	2
260	2
five	3
harbour	1
desk	9
belgium	1
immediately	22
password	4
you	429
muscle	2
loss	1
trash	1
emma	1
helpful	2
excluding	2
miami	1
alternatively	1
purchasing	2
admitted	1
loses	2
upgraded	1
afeee	1
lanterns	1
unique	2
payments	8
terrible	1
lose	2
52477	1
become	6
georgel	2
record	2
page	23
regardless	4
poor	3
exceed	1
because	19
arbitrage	4
towels	1
982	1
belonged	1
upgrades	2
d'ivoire	3
authority	1
dynegy	11
preposition	1
macromedia	6
7877	6
story	17
recommendation	1
39934	2
peter	3
ballot	1
subscribing	1
recognition	1
happens	1
kitchen	3
poors	1
est	1
borland	1
lead	10
broad	2
avoid	10
xanax	2
mines	1
asthma	1
striking	1
leap	1
does	11
discretion	1
anabel	1
esa	1
assuming	1
salaried	1
three	17
fanny	1
limitations	1
vintage	2
dci	1
33465	1
goatee	1
rock	2
roving	6
pressure	5
host	1
expire	1
prohibited	1
although	3
048	1
analyses	1
stay	2
television	1
9643	2
panel	1
mmbtu	6
about	52
actual	4
carried	1
extension	1
getting	8
stad	1
shipping	1
kri	2
symaantec	1
eatables	1
mayerbrown	1
insufficient	1
uncover	1
introduced	3
microsale	7
executives	1
warranty	1
512517	1
letters	11
carolyn	1
owe	1
payment	1
warrants	2
terry	1
tag	1
eo	1
terence	1
screamed	1
included	8
footmen	1
promise	1
female	3
joyce	1
kinda	2
managing	1
seventhpower	4
uncollected	1
fired	1
twain	1
postal	1
prozac	1
rejoice	1
additional	12
adolescent	1
confident	1
texaco	6
prospects	1
rightly	1
daniels	1
relegated	1
secret	6
00450	1
imperial	1
like	54
spread	1
trigger	2
try	10
frustration	1
biggest	1
ssmb	1
ford	1
chunk	1
cancel	1
function	5
procrustes	1
buy	7
frightrob	1
xan	2
i've	9
560	1
bus	4
brand	6
strengths	2
but	66
yeah	2
delivery	11
expected	6
slipped	1
construction	1
bannersgomlm	8
automated	2
hc	2
apollo	1
eat	3
cpm	6
embargo	1
challenges	1
sending	1
made	15
safety	2
places	1
switch	1
dangerous	1
j	22
flip	1
signed	4
placed	1
carriage	1
books	2
stories	4
ruling	2
demonstrate	2
1488230796	1
meyers	1
minutes	5
what	64
instead	3
irish	1
replying	1
significance	1
universal	1
measure	1
dissemination	1
hopkins	1
hearers	1
right	17
rule	2
pavluk	1
sneak	2
sapphire	1
campus	1
worse	1
inc	11
________________________________________	1
refinances	2
functions	5
compared	1
searching	2
49	1
46	2
47	2
44	6
45	6
claiming	1
43	2
40	9
41	1
kokas	1
old	7
book	5
details	3
sick	1
hpl	12
'smithc	1
zinc	1
incredibly	1
you're	2
ashburton	3
gonzalez	1
74949	1
delainey	8
kinds	2
volumes	1
monday	13
nrg	1
worrying	1
june	11
inherently	1
insults	1
oem	3
sure	11
chance	6
supervisors	5
nospam	1
ceos	1
outdated	1
agonizing	1
friends	3
incurred	3
exposure	2
txuenergy	3
sentiment	1
using	18
fund	4
ranks	2
starting	1
heathman	1
lehr	1
morne	1
hikes	4
portion	1
lift	1
compete	2
we're	1
474	1
runkel	1
understand	7
'mcosta	1
thompson	1
commencement	1

HW2.1.: Sort in Hadoop MapReduce
Given as input: Records of the form (integer, “NA”), where integer is any integer, and “NA” is just the empty string.
Output: sorted key value pairs of the form (integer, “NA”); what happens if you have multiple reducers? Do you need additional steps? Explain.

Write code to generate N random records of the form (integer, “NA”). Let N = 10,000.
Write the python Hadoop streaming map-reduce job to perform this sort.


In [121]:
'''
        HW2.1.: Sort in Hadoop MapReduce 
        Given as input: Records of the form <integer, “NA”>, 
        where integer is any integer, and “NA” is just the empty string. 

        Output: sorted key value pairs of the form <integer, “NA”>

        Write code to generate N random records of the form <integer, “NA”>. 
        Let N = 10,000. 
        Write the python Hadoop streaming map-reduce job to perform this sort.
'''

# make directory for problem and change to that dir
!mkdir ~/Documents/W261/hw2/hw2_1/
%cd ~/Documents/W261/hw2/hw2_1/


mkdir: /Users/davidadams/Documents/W261/hw2/hw2_1/: File exists
/Users/davidadams/Documents/W261/hw2/hw2_1

In [122]:
%%writefile mapper.py
#!/usr/bin/python

import sys

# input comes from STDIN (standard input)
for line in sys.stdin:
    # remove leading and trailing whitespace
    line = line.strip()
    # split the line into words
    words = line.split(',')

    # write the results to STDOUT (standard output);
    # what we output here will be the input for the
    # Reduce step, i.e. the input for reducer.py
    #
    # tab-delimited
    print '%d\t%s' % (int(words[0]), words[1])


Overwriting mapper.py

In [123]:
%%writefile reducer.py
#!/usr/bin/python

from operator import itemgetter
import sys

# input comes from STDIN
for line in sys.stdin:

    # remove leading and trailing whitespace
    line = line.strip()

    # parse the input we got from mapper.py
    record_int, record_str = line.split('\t')

    # convert count (currently a string) to int
    try:
        record_int = int(record_int)
    except ValueError:
        # count was not a number, so silently
        # ignore/discard this line
        continue

    # Hadoop sorts map output
    # by key (here: count) before it is passed to the reducer
    print '%d\t%s' % (record_int, record_str)


Overwriting reducer.py

In [124]:
# Run mapper and reducer cells first to write mapper.py and reducer.py

def hw2_1():
    !hdfs dfs -mkdir -p /user/davidadams #this dir seems to have to match the computer's user and my husband (davidadams) set up this computer years ago
    
    import numpy as np
    from numpy.random import randint

    def make_randomrecords(N, datafile):
        '''
            Inputs: N = number of random records to generate
                    datafile = file to store random records into
            Generates N random numbers and stores as <n,"NA">
        '''
        with open(datafile, 'w') as f:
            # generate N random integers in the range [0,N)
            randrecord_ints = randint(N, size=N)
            # write n,"NA" to data file
            for i in randrecord_ints:
                f.write(str(i)+',NA\n')

    
    # generate 10,000 random records to sort
    N = 10000
    datafile = 'randomrecords.txt'
    make_randomrecords(N, datafile)
    
    # put data file into HDFS
    !hdfs dfs -rm randomrecords.txt
    !hdfs dfs -put randomrecords.txt /user/davidadams
    
    # run Hadoop streaming mapreduce with mapper.py and reducer.py
    !hdfs dfs -rm -r sortedrecordsOutput
    !hadoop jar ~/Documents/W261/hw2/hadoop-*streaming*.jar -D mapred.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator -D mapred.text.key.comparator.options=-n -mapper mapper.py -reducer reducer.py -input randomrecords.txt -output sortedrecordsOutput -numReduceTasks 2
    
    # show sorted results
    !hdfs dfs -cat sortedrecordsOutput/part-00000
    

hw2_1()


15/09/15 17:05:38 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:05:40 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:05:41 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted randomrecords.txt
15/09/15 17:05:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:05:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:05:45 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted sortedrecordsOutput
15/09/15 17:05:46 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:05:47 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
15/09/15 17:05:47 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
15/09/15 17:05:47 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
15/09/15 17:05:48 INFO mapred.FileInputFormat: Total input paths to process : 1
15/09/15 17:05:48 INFO mapreduce.JobSubmitter: number of splits:1
15/09/15 17:05:48 INFO Configuration.deprecation: mapred.output.key.comparator.class is deprecated. Instead, use mapreduce.job.output.key.comparator.class
15/09/15 17:05:48 INFO Configuration.deprecation: mapred.text.key.comparator.options is deprecated. Instead, use mapreduce.partition.keycomparator.options
15/09/15 17:05:48 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1946784352_0001
15/09/15 17:05:48 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
15/09/15 17:05:48 INFO mapred.LocalJobRunner: OutputCommitter set in config null
15/09/15 17:05:48 INFO mapreduce.Job: Running job: job_local1946784352_0001
15/09/15 17:05:48 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter
15/09/15 17:05:48 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:05:48 INFO mapred.LocalJobRunner: Waiting for map tasks
15/09/15 17:05:48 INFO mapred.LocalJobRunner: Starting task: attempt_local1946784352_0001_m_000000_0
15/09/15 17:05:48 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:05:48 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:05:48 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:05:48 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/davidadams/randomrecords.txt:0+78878
15/09/15 17:05:48 INFO mapred.MapTask: numReduceTasks: 2
15/09/15 17:05:48 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)
15/09/15 17:05:48 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100
15/09/15 17:05:48 INFO mapred.MapTask: soft limit at 83886080
15/09/15 17:05:48 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
15/09/15 17:05:48 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
15/09/15 17:05:48 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
15/09/15 17:05:49 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_1/./mapper.py]
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
15/09/15 17:05:49 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
15/09/15 17:05:49 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition
15/09/15 17:05:49 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir
15/09/15 17:05:49 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id
15/09/15 17:05:49 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:49 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:49 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:49 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:49 INFO streaming.PipeMapRed: R/W/S=10000/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:49 INFO streaming.PipeMapRed: Records R/W=10000/1
15/09/15 17:05:49 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:05:49 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:05:49 INFO mapred.LocalJobRunner: 
15/09/15 17:05:49 INFO mapred.MapTask: Starting flush of map output
15/09/15 17:05:49 INFO mapred.MapTask: Spilling map output
15/09/15 17:05:49 INFO mapred.MapTask: bufstart = 0; bufend = 78878; bufvoid = 104857600
15/09/15 17:05:49 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26174400(104697600); length = 39997/6553600
15/09/15 17:05:49 INFO mapred.MapTask: Finished spill 0
15/09/15 17:05:49 INFO mapred.Task: Task:attempt_local1946784352_0001_m_000000_0 is done. And is in the process of committing
15/09/15 17:05:49 INFO mapred.LocalJobRunner: Records R/W=10000/1
15/09/15 17:05:49 INFO mapred.Task: Task 'attempt_local1946784352_0001_m_000000_0' done.
15/09/15 17:05:49 INFO mapred.LocalJobRunner: Finishing task: attempt_local1946784352_0001_m_000000_0
15/09/15 17:05:49 INFO mapred.LocalJobRunner: map task executor complete.
15/09/15 17:05:49 INFO mapred.LocalJobRunner: Waiting for reduce tasks
15/09/15 17:05:49 INFO mapred.LocalJobRunner: Starting task: attempt_local1946784352_0001_r_000000_0
15/09/15 17:05:49 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:05:49 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:05:49 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:05:49 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@6af649f2
15/09/15 17:05:49 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10
15/09/15 17:05:49 INFO reduce.EventFetcher: attempt_local1946784352_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
15/09/15 17:05:49 INFO mapreduce.Job: Job job_local1946784352_0001 running in uber mode : false
15/09/15 17:05:49 INFO mapreduce.Job:  map 100% reduce 0%
15/09/15 17:05:49 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local1946784352_0001_m_000000_0 decomp: 49432 len: 49436 to MEMORY
15/09/15 17:05:49 INFO reduce.InMemoryMapOutput: Read 49432 bytes from map-output for attempt_local1946784352_0001_m_000000_0
15/09/15 17:05:49 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 49432, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->49432
15/09/15 17:05:49 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning
15/09/15 17:05:49 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:05:49 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs
15/09/15 17:05:49 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:05:49 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 49428 bytes
15/09/15 17:05:49 INFO reduce.MergeManagerImpl: Merged 1 segments, 49432 bytes to disk to satisfy reduce memory limit
15/09/15 17:05:49 INFO reduce.MergeManagerImpl: Merging 1 files, 49436 bytes from disk
15/09/15 17:05:49 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
15/09/15 17:05:49 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:05:49 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 49428 bytes
15/09/15 17:05:49 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:05:49 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_1/./reducer.py]
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
15/09/15 17:05:49 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
15/09/15 17:05:49 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:49 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:49 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:49 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:49 INFO streaming.PipeMapRed: Records R/W=4999/1
15/09/15 17:05:49 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:05:50 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:05:50 INFO mapred.Task: Task:attempt_local1946784352_0001_r_000000_0 is done. And is in the process of committing
15/09/15 17:05:50 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:05:50 INFO mapred.Task: Task attempt_local1946784352_0001_r_000000_0 is allowed to commit now
15/09/15 17:05:50 INFO output.FileOutputCommitter: Saved output of task 'attempt_local1946784352_0001_r_000000_0' to hdfs://localhost:9000/user/davidadams/sortedrecordsOutput/_temporary/0/task_local1946784352_0001_r_000000
15/09/15 17:05:50 INFO mapred.LocalJobRunner: Records R/W=4999/1 > reduce
15/09/15 17:05:50 INFO mapred.Task: Task 'attempt_local1946784352_0001_r_000000_0' done.
15/09/15 17:05:50 INFO mapred.LocalJobRunner: Finishing task: attempt_local1946784352_0001_r_000000_0
15/09/15 17:05:50 INFO mapred.LocalJobRunner: Starting task: attempt_local1946784352_0001_r_000001_0
15/09/15 17:05:50 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:05:50 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:05:50 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:05:50 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@4e7e63a2
15/09/15 17:05:50 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10
15/09/15 17:05:50 INFO reduce.EventFetcher: attempt_local1946784352_0001_r_000001_0 Thread started: EventFetcher for fetching Map Completion Events
15/09/15 17:05:50 INFO reduce.LocalFetcher: localfetcher#2 about to shuffle output of map attempt_local1946784352_0001_m_000000_0 decomp: 49450 len: 49454 to MEMORY
15/09/15 17:05:50 INFO reduce.InMemoryMapOutput: Read 49450 bytes from map-output for attempt_local1946784352_0001_m_000000_0
15/09/15 17:05:50 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 49450, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->49450
15/09/15 17:05:50 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning
15/09/15 17:05:50 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:05:50 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs
15/09/15 17:05:50 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:05:50 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 49446 bytes
15/09/15 17:05:50 INFO reduce.MergeManagerImpl: Merged 1 segments, 49450 bytes to disk to satisfy reduce memory limit
15/09/15 17:05:50 INFO reduce.MergeManagerImpl: Merging 1 files, 49454 bytes from disk
15/09/15 17:05:50 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
15/09/15 17:05:50 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:05:50 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 49446 bytes
15/09/15 17:05:50 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:05:50 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_1/./reducer.py]
15/09/15 17:05:50 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
15/09/15 17:05:50 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:50 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:50 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:50 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:05:50 INFO streaming.PipeMapRed: Records R/W=5001/1
15/09/15 17:05:50 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:05:50 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:05:50 INFO mapred.Task: Task:attempt_local1946784352_0001_r_000001_0 is done. And is in the process of committing
15/09/15 17:05:50 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:05:50 INFO mapred.Task: Task attempt_local1946784352_0001_r_000001_0 is allowed to commit now
15/09/15 17:05:50 INFO output.FileOutputCommitter: Saved output of task 'attempt_local1946784352_0001_r_000001_0' to hdfs://localhost:9000/user/davidadams/sortedrecordsOutput/_temporary/0/task_local1946784352_0001_r_000001
15/09/15 17:05:50 INFO mapred.LocalJobRunner: Records R/W=5001/1 > reduce
15/09/15 17:05:50 INFO mapred.Task: Task 'attempt_local1946784352_0001_r_000001_0' done.
15/09/15 17:05:50 INFO mapred.LocalJobRunner: Finishing task: attempt_local1946784352_0001_r_000001_0
15/09/15 17:05:50 INFO mapred.LocalJobRunner: reduce task executor complete.
15/09/15 17:05:50 INFO mapreduce.Job:  map 100% reduce 100%
15/09/15 17:05:50 INFO mapreduce.Job: Job job_local1946784352_0001 completed successfully
15/09/15 17:05:50 INFO mapreduce.Job: Counters: 35
	File System Counters
		FILE: Number of bytes read=622716
		FILE: Number of bytes written=1655256
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=236634
		HDFS: Number of bytes written=118310
		HDFS: Number of read operations=24
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=9
	Map-Reduce Framework
		Map input records=10000
		Map output records=10000
		Map output bytes=78878
		Map output materialized bytes=98890
		Input split bytes=107
		Combine input records=0
		Combine output records=0
		Reduce input groups=6341
		Reduce shuffle bytes=98890
		Reduce input records=10000
		Reduce output records=10000
		Spilled Records=20000
		Shuffled Maps =2
		Failed Shuffles=0
		Merged Map outputs=2
		GC time elapsed (ms)=13
		Total committed heap usage (bytes)=949485568
	Shuffle Errors
		BAD_ID=0
		CONNECTION=0
		IO_ERROR=0
		WRONG_LENGTH=0
		WRONG_MAP=0
		WRONG_REDUCE=0
	File Input Format Counters 
		Bytes Read=78878
	File Output Format Counters 
		Bytes Written=78878
15/09/15 17:05:50 INFO streaming.StreamJob: Output directory: sortedrecordsOutput
15/09/15 17:05:52 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
1	NA
3	NA
3	NA
3	NA
5	NA
12	NA
12	NA
12	NA
14	NA
14	NA
14	NA
16	NA
16	NA
25	NA
25	NA
27	NA
27	NA
29	NA
29	NA
30	NA
34	NA
34	NA
36	NA
43	NA
49	NA
54	NA
54	NA
56	NA
58	NA
61	NA
63	NA
65	NA
65	NA
65	NA
65	NA
69	NA
70	NA
76	NA
76	NA
78	NA
83	NA
85	NA
85	NA
85	NA
90	NA
92	NA
94	NA
94	NA
94	NA
96	NA
102	NA
104	NA
104	NA
115	NA
117	NA
119	NA
119	NA
120	NA
122	NA
135	NA
137	NA
137	NA
144	NA
144	NA
144	NA
148	NA
148	NA
148	NA
151	NA
151	NA
155	NA
155	NA
159	NA
160	NA
162	NA
162	NA
164	NA
168	NA
171	NA
171	NA
171	NA
173	NA
173	NA
175	NA
177	NA
179	NA
179	NA
182	NA
182	NA
184	NA
184	NA
188	NA
188	NA
188	NA
191	NA
193	NA
201	NA
203	NA
203	NA
205	NA
212	NA
214	NA
214	NA
214	NA
216	NA
223	NA
227	NA
229	NA
230	NA
232	NA
234	NA
236	NA
238	NA
238	NA
238	NA
238	NA
243	NA
243	NA
245	NA
247	NA
247	NA
247	NA
247	NA
247	NA
250	NA
252	NA
254	NA
254	NA
256	NA
256	NA
258	NA
261	NA
263	NA
263	NA
263	NA
269	NA
272	NA
272	NA
272	NA
274	NA
276	NA
278	NA
281	NA
281	NA
283	NA
287	NA
292	NA
292	NA
292	NA
292	NA
294	NA
294	NA
296	NA
298	NA
300	NA
302	NA
304	NA
306	NA
315	NA
319	NA
319	NA
320	NA
324	NA
324	NA
326	NA
326	NA
326	NA
328	NA
328	NA
328	NA
328	NA
331	NA
335	NA
337	NA
339	NA
339	NA
344	NA
346	NA
346	NA
351	NA
353	NA
355	NA
357	NA
359	NA
359	NA
360	NA
366	NA
366	NA
371	NA
371	NA
371	NA
371	NA
371	NA
375	NA
377	NA
379	NA
379	NA
379	NA
380	NA
388	NA
395	NA
399	NA
401	NA
403	NA
405	NA
407	NA
409	NA
410	NA
412	NA
414	NA
418	NA
421	NA
421	NA
425	NA
427	NA
430	NA
432	NA
432	NA
434	NA
434	NA
436	NA
441	NA
441	NA
443	NA
445	NA
447	NA
447	NA
449	NA
449	NA
450	NA
450	NA
452	NA
454	NA
458	NA
461	NA
465	NA
467	NA
472	NA
472	NA
472	NA
478	NA
478	NA
481	NA
483	NA
489	NA
489	NA
496	NA
502	NA
504	NA
504	NA
508	NA
508	NA
511	NA
511	NA
513	NA
513	NA
515	NA
517	NA
519	NA
520	NA
520	NA
522	NA
522	NA
524	NA
526	NA
531	NA
531	NA
533	NA
535	NA
537	NA
539	NA
544	NA
546	NA
546	NA
546	NA
553	NA
553	NA
553	NA
559	NA
560	NA
560	NA
560	NA
562	NA
564	NA
566	NA
568	NA
571	NA
573	NA
573	NA
577	NA
577	NA
579	NA
584	NA
586	NA
586	NA
586	NA
588	NA
588	NA
599	NA
601	NA
605	NA
607	NA
609	NA
609	NA
610	NA
612	NA
612	NA
614	NA
616	NA
618	NA
621	NA
623	NA
625	NA
625	NA
625	NA
629	NA
632	NA
634	NA
641	NA
641	NA
641	NA
641	NA
645	NA
645	NA
654	NA
658	NA
667	NA
670	NA
674	NA
676	NA
676	NA
676	NA
681	NA
681	NA
681	NA
683	NA
683	NA
685	NA
687	NA
689	NA
692	NA
694	NA
696	NA
696	NA
700	NA
700	NA
702	NA
702	NA
704	NA
704	NA
706	NA
706	NA
706	NA
708	NA
711	NA
711	NA
711	NA
713	NA
715	NA
715	NA
715	NA
715	NA
728	NA
728	NA
728	NA
731	NA
731	NA
731	NA
735	NA
737	NA
737	NA
739	NA
740	NA
742	NA
746	NA
748	NA
748	NA
751	NA
753	NA
755	NA
759	NA
759	NA
764	NA
766	NA
766	NA
768	NA
768	NA
768	NA
771	NA
771	NA
771	NA
773	NA
775	NA
779	NA
780	NA
782	NA
784	NA
786	NA
786	NA
786	NA
788	NA
788	NA
788	NA
791	NA
793	NA
793	NA
795	NA
797	NA
797	NA
799	NA
799	NA
801	NA
801	NA
803	NA
803	NA
803	NA
805	NA
807	NA
807	NA
809	NA
809	NA
810	NA
814	NA
821	NA
825	NA
825	NA
825	NA
827	NA
829	NA
836	NA
838	NA
845	NA
849	NA
850	NA
852	NA
854	NA
856	NA
858	NA
863	NA
865	NA
867	NA
869	NA
870	NA
870	NA
870	NA
874	NA
876	NA
876	NA
876	NA
878	NA
881	NA
883	NA
885	NA
885	NA
890	NA
892	NA
892	NA
892	NA
892	NA
892	NA
894	NA
896	NA
902	NA
904	NA
913	NA
913	NA
917	NA
917	NA
917	NA
917	NA
919	NA
922	NA
926	NA
928	NA
933	NA
935	NA
935	NA
937	NA
937	NA
939	NA
946	NA
946	NA
946	NA
955	NA
955	NA
957	NA
962	NA
964	NA
964	NA
966	NA
971	NA
971	NA
971	NA
973	NA
975	NA
975	NA
980	NA
980	NA
984	NA
993	NA
997	NA
997	NA
997	NA
997	NA
999	NA
1000	NA
1011	NA
1015	NA
1015	NA
1020	NA
1020	NA
1024	NA
1024	NA
1028	NA
1028	NA
1028	NA
1033	NA
1039	NA
1040	NA
1046	NA
1046	NA
1046	NA
1046	NA
1051	NA
1051	NA
1053	NA
1055	NA
1055	NA
1059	NA
1062	NA
1064	NA
1066	NA
1068	NA
1075	NA
1077	NA
1079	NA
1080	NA
1080	NA
1082	NA
1082	NA
1086	NA
1088	NA
1088	NA
1093	NA
1095	NA
1095	NA
1101	NA
1101	NA
1103	NA
1107	NA
1109	NA
1112	NA
1116	NA
1121	NA
1121	NA
1125	NA
1125	NA
1129	NA
1132	NA
1132	NA
1138	NA
1138	NA
1152	NA
1161	NA
1161	NA
1163	NA
1165	NA
1167	NA
1167	NA
1169	NA
1169	NA
1169	NA
1170	NA
1178	NA
1178	NA
1178	NA
1187	NA
1187	NA
1190	NA
1192	NA
1194	NA
1196	NA
1196	NA
1198	NA
1200	NA
1200	NA
1202	NA
1202	NA
1208	NA
1208	NA
1213	NA
1213	NA
1217	NA
1217	NA
1222	NA
1222	NA
1224	NA
1226	NA
1226	NA
1228	NA
1235	NA
1235	NA
1237	NA
1239	NA
1240	NA
1240	NA
1242	NA
1248	NA
1251	NA
1253	NA
1255	NA
1259	NA
1260	NA
1260	NA
1260	NA
1262	NA
1264	NA
1264	NA
1266	NA
1266	NA
1268	NA
1273	NA
1279	NA
1279	NA
1282	NA
1284	NA
1284	NA
1286	NA
1286	NA
1288	NA
1291	NA
1291	NA
1291	NA
1293	NA
1299	NA
1299	NA
1303	NA
1303	NA
1305	NA
1305	NA
1312	NA
1312	NA
1312	NA
1314	NA
1314	NA
1327	NA
1329	NA
1329	NA
1330	NA
1330	NA
1334	NA
1338	NA
1341	NA
1345	NA
1347	NA
1347	NA
1350	NA
1350	NA
1352	NA
1354	NA
1354	NA
1356	NA
1361	NA
1361	NA
1365	NA
1365	NA
1367	NA
1369	NA
1376	NA
1376	NA
1376	NA
1381	NA
1389	NA
1389	NA
1389	NA
1390	NA
1394	NA
1394	NA
1398	NA
1398	NA
1400	NA
1400	NA
1402	NA
1406	NA
1406	NA
1406	NA
1406	NA
1408	NA
1417	NA
1417	NA
1417	NA
1419	NA
1422	NA
1422	NA
1424	NA
1426	NA
1428	NA
1433	NA
1433	NA
1437	NA
1440	NA
1442	NA
1444	NA
1444	NA
1448	NA
1448	NA
1448	NA
1453	NA
1453	NA
1453	NA
1455	NA
1460	NA
1460	NA
1468	NA
1471	NA
1473	NA
1473	NA
1475	NA
1479	NA
1480	NA
1486	NA
1488	NA
1493	NA
1497	NA
1497	NA
1503	NA
1505	NA
1509	NA
1509	NA
1514	NA
1514	NA
1514	NA
1516	NA
1518	NA
1518	NA
1523	NA
1525	NA
1525	NA
1525	NA
1527	NA
1527	NA
1527	NA
1530	NA
1532	NA
1534	NA
1538	NA
1538	NA
1541	NA
1543	NA
1543	NA
1545	NA
1549	NA
1550	NA
1550	NA
1556	NA
1558	NA
1558	NA
1558	NA
1561	NA
1563	NA
1567	NA
1567	NA
1570	NA
1574	NA
1578	NA
1581	NA
1585	NA
1585	NA
1587	NA
1590	NA
1596	NA
1600	NA
1602	NA
1604	NA
1604	NA
1606	NA
1611	NA
1617	NA
1617	NA
1619	NA
1619	NA
1620	NA
1622	NA
1624	NA
1626	NA
1626	NA
1631	NA
1631	NA
1633	NA
1637	NA
1644	NA
1644	NA
1644	NA
1644	NA
1646	NA
1648	NA
1648	NA
1648	NA
1651	NA
1651	NA
1653	NA
1657	NA
1657	NA
1657	NA
1660	NA
1660	NA
1662	NA
1666	NA
1671	NA
1673	NA
1673	NA
1677	NA
1679	NA
1679	NA
1679	NA
1682	NA
1682	NA
1684	NA
1686	NA
1688	NA
1693	NA
1693	NA
1699	NA
1701	NA
1701	NA
1703	NA
1703	NA
1705	NA
1707	NA
1707	NA
1709	NA
1712	NA
1714	NA
1716	NA
1716	NA
1716	NA
1716	NA
1721	NA
1723	NA
1723	NA
1723	NA
1725	NA
1727	NA
1727	NA
1729	NA
1729	NA
1730	NA
1730	NA
1732	NA
1732	NA
1732	NA
1734	NA
1734	NA
1736	NA
1736	NA
1738	NA
1738	NA
1747	NA
1749	NA
1750	NA
1752	NA
1758	NA
1761	NA
1763	NA
1763	NA
1763	NA
1765	NA
1767	NA
1767	NA
1769	NA
1769	NA
1770	NA
1772	NA
1772	NA
1781	NA
1783	NA
1783	NA
1785	NA
1787	NA
1787	NA
1789	NA
1789	NA
1792	NA
1792	NA
1796	NA
1800	NA
1800	NA
1802	NA
1802	NA
1802	NA
1804	NA
1808	NA
1811	NA
1813	NA
1815	NA
1815	NA
1815	NA
1817	NA
1820	NA
1822	NA
1822	NA
1824	NA
1833	NA
1835	NA
1835	NA
1837	NA
1839	NA
1844	NA
1846	NA
1848	NA
1851	NA
1860	NA
1862	NA
1862	NA
1871	NA
1873	NA
1873	NA
1875	NA
1879	NA
1880	NA
1880	NA
1884	NA
1893	NA
1893	NA
1901	NA
1903	NA
1903	NA
1905	NA
1907	NA
1909	NA
1912	NA
1918	NA
1923	NA
1923	NA
1925	NA
1929	NA
1934	NA
1936	NA
1936	NA
1936	NA
1936	NA
1943	NA
1945	NA
1945	NA
1945	NA
1949	NA
1949	NA
1949	NA
1952	NA
1956	NA
1958	NA
1961	NA
1963	NA
1963	NA
1965	NA
1967	NA
1974	NA
1976	NA
1978	NA
1983	NA
1985	NA
1989	NA
1990	NA
1990	NA
1990	NA
1990	NA
1994	NA
1996	NA
1996	NA
1996	NA
1998	NA
2001	NA
2001	NA
2003	NA
2007	NA
2009	NA
2012	NA
2016	NA
2016	NA
2016	NA
2018	NA
2023	NA
2025	NA
2027	NA
2027	NA
2030	NA
2032	NA
2032	NA
2032	NA
2034	NA
2034	NA
2034	NA
2036	NA
2036	NA
2047	NA
2047	NA
2054	NA
2054	NA
2056	NA
2058	NA
2063	NA
2063	NA
2067	NA
2067	NA
2067	NA
2070	NA
2072	NA
2085	NA
2089	NA
2089	NA
2089	NA
2092	NA
2098	NA
2102	NA
2104	NA
2108	NA
2108	NA
2111	NA
2111	NA
2113	NA
2115	NA
2115	NA
2115	NA
2117	NA
2120	NA
2122	NA
2122	NA
2124	NA
2128	NA
2128	NA
2128	NA
2135	NA
2135	NA
2137	NA
2137	NA
2139	NA
2140	NA
2140	NA
2140	NA
2144	NA
2146	NA
2148	NA
2151	NA
2151	NA
2151	NA
2155	NA
2159	NA
2159	NA
2166	NA
2179	NA
2180	NA
2182	NA
2186	NA
2186	NA
2186	NA
2195	NA
2195	NA
2201	NA
2203	NA
2205	NA
2205	NA
2207	NA
2207	NA
2209	NA
2214	NA
2214	NA
2218	NA
2223	NA
2223	NA
2225	NA
2227	NA
2229	NA
2230	NA
2232	NA
2234	NA
2234	NA
2234	NA
2238	NA
2238	NA
2241	NA
2241	NA
2245	NA
2247	NA
2249	NA
2250	NA
2250	NA
2254	NA
2256	NA
2258	NA
2263	NA
2265	NA
2265	NA
2269	NA
2269	NA
2270	NA
2270	NA
2274	NA
2274	NA
2276	NA
2278	NA
2281	NA
2281	NA
2281	NA
2283	NA
2285	NA
2285	NA
2296	NA
2302	NA
2304	NA
2308	NA
2311	NA
2311	NA
2311	NA
2313	NA
2313	NA
2313	NA
2319	NA
2319	NA
2324	NA
2324	NA
2331	NA
2333	NA
2335	NA
2335	NA
2337	NA
2339	NA
2340	NA
2342	NA
2344	NA
2346	NA
2346	NA
2348	NA
2351	NA
2351	NA
2355	NA
2355	NA
2357	NA
2357	NA
2359	NA
2362	NA
2362	NA
2364	NA
2366	NA
2366	NA
2368	NA
2371	NA
2371	NA
2371	NA
2373	NA
2379	NA
2379	NA
2380	NA
2382	NA
2386	NA
2388	NA
2388	NA
2391	NA
2393	NA
2393	NA
2395	NA
2401	NA
2401	NA
2403	NA
2403	NA
2407	NA
2407	NA
2407	NA
2414	NA
2414	NA
2416	NA
2416	NA
2418	NA
2421	NA
2423	NA
2425	NA
2425	NA
2427	NA
2427	NA
2427	NA
2429	NA
2432	NA
2432	NA
2436	NA
2436	NA
2438	NA
2438	NA
2441	NA
2441	NA
2449	NA
2449	NA
2450	NA
2452	NA
2454	NA
2456	NA
2458	NA
2458	NA
2458	NA
2465	NA
2465	NA
2467	NA
2469	NA
2469	NA
2470	NA
2472	NA
2478	NA
2478	NA
2481	NA
2483	NA
2483	NA
2485	NA
2485	NA
2487	NA
2489	NA
2490	NA
2490	NA
2492	NA
2496	NA
2498	NA
2498	NA
2500	NA
2500	NA
2500	NA
2504	NA
2504	NA
2506	NA
2508	NA
2508	NA
2508	NA
2515	NA
2517	NA
2517	NA
2517	NA
2524	NA
2524	NA
2531	NA
2535	NA
2537	NA
2537	NA
2537	NA
2539	NA
2540	NA
2542	NA
2542	NA
2544	NA
2546	NA
2548	NA
2553	NA
2553	NA
2557	NA
2562	NA
2566	NA
2566	NA
2566	NA
2566	NA
2568	NA
2568	NA
2573	NA
2575	NA
2577	NA
2580	NA
2582	NA
2582	NA
2584	NA
2588	NA
2588	NA
2591	NA
2595	NA
2599	NA
2603	NA
2603	NA
2605	NA
2607	NA
2609	NA
2609	NA
2610	NA
2612	NA
2612	NA
2621	NA
2621	NA
2621	NA
2623	NA
2625	NA
2630	NA
2630	NA
2630	NA
2632	NA
2634	NA
2634	NA
2638	NA
2641	NA
2641	NA
2641	NA
2643	NA
2643	NA
2645	NA
2645	NA
2645	NA
2647	NA
2647	NA
2647	NA
2649	NA
2649	NA
2650	NA
2650	NA
2650	NA
2650	NA
2652	NA
2652	NA
2654	NA
2656	NA
2658	NA
2658	NA
2658	NA
2665	NA
2665	NA
2665	NA
2676	NA
2678	NA
2678	NA
2685	NA
2685	NA
2700	NA
2700	NA
2700	NA
2702	NA
2704	NA
2706	NA
2706	NA
2708	NA
2711	NA
2711	NA
2711	NA
2713	NA
2715	NA
2715	NA
2715	NA
2715	NA
2719	NA
2719	NA
2720	NA
2722	NA
2722	NA
2722	NA
2728	NA
2733	NA
2737	NA
2739	NA
2739	NA
2739	NA
2740	NA
2746	NA
2755	NA
2755	NA
2757	NA
2759	NA
2762	NA
2762	NA
2766	NA
2773	NA
2773	NA
2773	NA
2779	NA
2782	NA
2786	NA
2791	NA
2791	NA
2795	NA
2795	NA
2797	NA
2797	NA
2799	NA
2799	NA
2803	NA
2805	NA
2805	NA
2807	NA
2807	NA
2809	NA
2810	NA
2812	NA
2812	NA
2814	NA
2814	NA
2818	NA
2821	NA
2821	NA
2823	NA
2829	NA
2829	NA
2829	NA
2830	NA
2836	NA
2836	NA
2838	NA
2838	NA
2841	NA
2847	NA
2847	NA
2850	NA
2858	NA
2861	NA
2865	NA
2867	NA
2870	NA
2870	NA
2870	NA
2874	NA
2885	NA
2887	NA
2889	NA
2890	NA
2892	NA
2894	NA
2894	NA
2896	NA
2898	NA
2898	NA
2900	NA
2902	NA
2904	NA
2906	NA
2906	NA
2906	NA
2908	NA
2911	NA
2913	NA
2913	NA
2915	NA
2917	NA
2920	NA
2922	NA
2924	NA
2924	NA
2926	NA
2931	NA
2933	NA
2935	NA
2935	NA
2935	NA
2935	NA
2937	NA
2937	NA
2939	NA
2942	NA
2944	NA
2944	NA
2953	NA
2953	NA
2955	NA
2957	NA
2957	NA
2959	NA
2960	NA
2962	NA
2962	NA
2973	NA
2973	NA
2973	NA
2973	NA
2973	NA
2977	NA
2977	NA
2979	NA
2982	NA
2986	NA
2988	NA
2991	NA
2991	NA
2991	NA
2993	NA
2993	NA
2993	NA
2995	NA
3004	NA
3006	NA
3011	NA
3015	NA
3022	NA
3024	NA
3026	NA
3028	NA
3033	NA
3035	NA
3035	NA
3035	NA
3037	NA
3044	NA
3046	NA
3053	NA
3057	NA
3060	NA
3060	NA
3066	NA
3068	NA
3071	NA
3073	NA
3079	NA
3082	NA
3084	NA
3086	NA
3086	NA
3088	NA
3088	NA
3088	NA
3097	NA
3097	NA
3099	NA
3099	NA
3103	NA
3105	NA
3105	NA
3109	NA
3112	NA
3116	NA
3121	NA
3121	NA
3123	NA
3125	NA
3125	NA
3127	NA
3129	NA
3129	NA
3130	NA
3130	NA
3134	NA
3134	NA
3136	NA
3136	NA
3143	NA
3143	NA
3145	NA
3145	NA
3145	NA
3145	NA
3150	NA
3150	NA
3152	NA
3154	NA
3156	NA
3174	NA
3176	NA
3178	NA
3185	NA
3185	NA
3190	NA
3192	NA
3194	NA
3196	NA
3198	NA
3198	NA
3200	NA
3202	NA
3202	NA
3204	NA
3204	NA
3208	NA
3213	NA
3213	NA
3213	NA
3215	NA
3215	NA
3220	NA
3224	NA
3226	NA
3228	NA
3228	NA
3228	NA
3228	NA
3237	NA
3237	NA
3240	NA
3242	NA
3244	NA
3248	NA
3248	NA
3248	NA
3251	NA
3251	NA
3255	NA
3262	NA
3266	NA
3268	NA
3277	NA
3277	NA
3277	NA
3279	NA
3282	NA
3284	NA
3286	NA
3288	NA
3291	NA
3299	NA
3299	NA
3301	NA
3301	NA
3303	NA
3303	NA
3305	NA
3309	NA
3309	NA
3310	NA
3310	NA
3310	NA
3312	NA
3314	NA
3318	NA
3321	NA
3321	NA
3321	NA
3327	NA
3330	NA
3332	NA
3334	NA
3334	NA
3336	NA
3336	NA
3345	NA
3350	NA
3350	NA
3352	NA
3352	NA
3352	NA
3354	NA
3354	NA
3358	NA
3358	NA
3358	NA
3361	NA
3361	NA
3363	NA
3363	NA
3363	NA
3365	NA
3370	NA
3372	NA
3372	NA
3372	NA
3374	NA
3378	NA
3385	NA
3389	NA
3390	NA
3394	NA
3396	NA
3404	NA
3406	NA
3411	NA
3413	NA
3417	NA
3419	NA
3419	NA
3422	NA
3431	NA
3433	NA
3433	NA
3435	NA
3437	NA
3440	NA
3442	NA
3442	NA
3442	NA
3446	NA
3448	NA
3448	NA
3448	NA
3453	NA
3455	NA
3455	NA
3455	NA
3457	NA
3459	NA
3460	NA
3462	NA
3466	NA
3466	NA
3471	NA
3479	NA
3480	NA
3482	NA
3482	NA
3486	NA
3491	NA
3491	NA
3493	NA
3495	NA
3501	NA
3501	NA
3501	NA
3505	NA
3509	NA
3509	NA
3509	NA
3510	NA
3510	NA
3516	NA
3518	NA
3523	NA
3525	NA
3525	NA
3527	NA
3529	NA
3529	NA
3529	NA
3530	NA
3530	NA
3532	NA
3534	NA
3534	NA
3536	NA
3536	NA
3538	NA
3541	NA
3543	NA
3545	NA
3549	NA
3549	NA
3549	NA
3552	NA
3556	NA
3563	NA
3565	NA
3570	NA
3570	NA
3572	NA
3572	NA
3574	NA
3574	NA
3574	NA
3583	NA
3583	NA
3583	NA
3585	NA
3587	NA
3589	NA
3590	NA
3590	NA
3592	NA
3596	NA
3596	NA
3596	NA
3596	NA
3598	NA
3598	NA
3602	NA
3606	NA
3608	NA
3611	NA
3617	NA
3619	NA
3622	NA
3624	NA
3624	NA
3628	NA
3628	NA
3631	NA
3637	NA
3637	NA
3639	NA
3640	NA
3640	NA
3646	NA
3648	NA
3651	NA
3653	NA
3655	NA
3659	NA
3662	NA
3662	NA
3664	NA
3668	NA
3671	NA
3671	NA
3675	NA
3677	NA
3677	NA
3680	NA
3682	NA
3684	NA
3688	NA
3693	NA
3695	NA
3697	NA
3697	NA
3699	NA
3699	NA
3699	NA
3703	NA
3707	NA
3712	NA
3716	NA
3723	NA
3723	NA
3727	NA
3729	NA
3729	NA
3729	NA
3730	NA
3732	NA
3732	NA
3738	NA
3738	NA
3741	NA
3741	NA
3743	NA
3743	NA
3745	NA
3750	NA
3752	NA
3752	NA
3754	NA
3756	NA
3756	NA
3756	NA
3761	NA
3761	NA
3761	NA
3765	NA
3765	NA
3765	NA
3769	NA
3770	NA
3772	NA
3774	NA
3781	NA
3787	NA
3787	NA
3792	NA
3792	NA
3792	NA
3792	NA
3796	NA
3796	NA
3798	NA
3802	NA
3802	NA
3804	NA
3804	NA
3808	NA
3808	NA
3808	NA
3811	NA
3819	NA
3820	NA
3820	NA
3820	NA
3822	NA
3822	NA
3824	NA
3826	NA
3833	NA
3835	NA
3839	NA
3839	NA
3840	NA
3840	NA
3842	NA
3842	NA
3842	NA
3842	NA
3844	NA
3844	NA
3846	NA
3848	NA
3851	NA
3853	NA
3855	NA
3859	NA
3860	NA
3860	NA
3860	NA
3862	NA
3862	NA
3864	NA
3864	NA
3868	NA
3875	NA
3875	NA
3875	NA
3875	NA
3877	NA
3877	NA
3877	NA
3879	NA
3879	NA
3882	NA
3886	NA
3886	NA
3891	NA
3891	NA
3891	NA
3893	NA
3893	NA
3897	NA
3897	NA
3899	NA
3899	NA
3901	NA
3903	NA
3905	NA
3905	NA
3907	NA
3909	NA
3909	NA
3909	NA
3910	NA
3910	NA
3916	NA
3916	NA
3918	NA
3918	NA
3918	NA
3918	NA
3921	NA
3923	NA
3927	NA
3934	NA
3934	NA
3934	NA
3941	NA
3941	NA
3945	NA
3947	NA
3949	NA
3949	NA
3950	NA
3950	NA
3952	NA
3958	NA
3958	NA
3963	NA
3965	NA
3967	NA
3969	NA
3972	NA
3972	NA
3972	NA
3974	NA
3974	NA
3978	NA
3978	NA
3978	NA
3981	NA
3981	NA
3983	NA
3987	NA
3990	NA
3992	NA
3994	NA
3994	NA
3994	NA
3996	NA
3998	NA
4003	NA
4003	NA
4005	NA
4007	NA
4007	NA
4009	NA
4010	NA
4012	NA
4012	NA
4012	NA
4014	NA
4023	NA
4023	NA
4025	NA
4030	NA
4034	NA
4034	NA
4034	NA
4036	NA
4036	NA
4036	NA
4036	NA
4036	NA
4038	NA
4041	NA
4047	NA
4047	NA
4050	NA
4052	NA
4052	NA
4056	NA
4063	NA
4063	NA
4065	NA
4065	NA
4067	NA
4069	NA
4069	NA
4069	NA
4069	NA
4069	NA
4070	NA
4070	NA
4072	NA
4078	NA
4081	NA
4083	NA
4085	NA
4085	NA
4087	NA
4090	NA
4094	NA
4098	NA
4098	NA
4100	NA
4100	NA
4102	NA
4104	NA
4106	NA
4106	NA
4106	NA
4108	NA
4108	NA
4108	NA
4108	NA
4108	NA
4111	NA
4111	NA
4113	NA
4115	NA
4115	NA
4117	NA
4119	NA
4120	NA
4122	NA
4122	NA
4124	NA
4128	NA
4131	NA
4131	NA
4135	NA
4140	NA
4144	NA
4151	NA
4153	NA
4155	NA
4155	NA
4157	NA
4160	NA
4160	NA
4162	NA
4168	NA
4173	NA
4177	NA
4179	NA
4180	NA
4182	NA
4184	NA
4191	NA
4193	NA
4193	NA
4195	NA
4197	NA
4197	NA
4197	NA
4205	NA
4205	NA
4207	NA
4209	NA
4210	NA
4210	NA
4210	NA
4212	NA
4212	NA
4214	NA
4216	NA
4218	NA
4223	NA
4223	NA
4223	NA
4225	NA
4229	NA
4229	NA
4232	NA
4232	NA
4238	NA
4238	NA
4238	NA
4241	NA
4243	NA
4247	NA
4252	NA
4252	NA
4256	NA
4256	NA
4258	NA
4258	NA
4263	NA
4263	NA
4263	NA
4265	NA
4267	NA
4269	NA
4274	NA
4274	NA
4278	NA
4278	NA
4285	NA
4292	NA
4294	NA
4294	NA
4294	NA
4296	NA
4302	NA
4304	NA
4308	NA
4308	NA
4313	NA
4317	NA
4320	NA
4320	NA
4326	NA
4328	NA
4331	NA
4333	NA
4335	NA
4335	NA
4335	NA
4337	NA
4337	NA
4339	NA
4342	NA
4344	NA
4344	NA
4346	NA
4346	NA
4351	NA
4351	NA
4351	NA
4359	NA
4359	NA
4360	NA
4360	NA
4364	NA
4366	NA
4375	NA
4375	NA
4377	NA
4380	NA
4382	NA
4393	NA
4393	NA
4397	NA
4399	NA
4399	NA
4405	NA
4407	NA
4409	NA
4412	NA
4418	NA
4421	NA
4429	NA
4430	NA
4430	NA
4430	NA
4434	NA
4434	NA
4436	NA
4436	NA
4438	NA
4441	NA
4445	NA
4447	NA
4450	NA
4452	NA
4454	NA
4456	NA
4456	NA
4458	NA
4465	NA
4467	NA
4469	NA
4469	NA
4469	NA
4470	NA
4472	NA
4474	NA
4474	NA
4474	NA
4478	NA
4483	NA
4483	NA
4485	NA
4487	NA
4490	NA
4490	NA
4494	NA
4498	NA
4498	NA
4498	NA
4502	NA
4504	NA
4508	NA
4515	NA
4519	NA
4519	NA
4520	NA
4522	NA
4526	NA
4526	NA
4526	NA
4528	NA
4528	NA
4528	NA
4531	NA
4531	NA
4533	NA
4533	NA
4533	NA
4535	NA
4535	NA
4537	NA
4537	NA
4540	NA
4540	NA
4540	NA
4542	NA
4546	NA
4548	NA
4551	NA
4553	NA
4555	NA
4555	NA
4557	NA
4557	NA
4557	NA
4562	NA
4562	NA
4562	NA
4566	NA
4566	NA
4568	NA
4571	NA
4573	NA
4575	NA
4575	NA
4575	NA
4575	NA
4575	NA
4577	NA
4579	NA
4579	NA
4584	NA
4588	NA
4588	NA
4593	NA
4599	NA
4599	NA
4601	NA
4603	NA
4603	NA
4609	NA
4610	NA
4612	NA
4616	NA
4616	NA
4616	NA
4623	NA
4629	NA
4629	NA
4634	NA
4636	NA
4636	NA
4638	NA
4638	NA
4638	NA
4641	NA
4643	NA
4643	NA
4654	NA
4656	NA
4658	NA
4658	NA
4661	NA
4667	NA
4667	NA
4676	NA
4676	NA
4681	NA
4683	NA
4687	NA
4689	NA
4696	NA
4698	NA
4698	NA
4702	NA
4706	NA
4706	NA
4706	NA
4706	NA
4711	NA
4711	NA
4711	NA
4711	NA
4711	NA
4715	NA
4715	NA
4715	NA
4715	NA
4715	NA
4719	NA
4722	NA
4724	NA
4724	NA
4726	NA
4728	NA
4728	NA
4731	NA
4733	NA
4737	NA
4737	NA
4739	NA
4746	NA
4753	NA
4753	NA
4753	NA
4755	NA
4755	NA
4755	NA
4757	NA
4757	NA
4757	NA
4759	NA
4759	NA
4759	NA
4762	NA
4764	NA
4764	NA
4771	NA
4773	NA
4773	NA
4773	NA
4775	NA
4777	NA
4779	NA
4780	NA
4780	NA
4782	NA
4782	NA
4784	NA
4788	NA
4788	NA
4788	NA
4788	NA
4791	NA
4791	NA
4791	NA
4793	NA
4793	NA
4795	NA
4795	NA
4797	NA
4797	NA
4797	NA
4801	NA
4807	NA
4810	NA
4810	NA
4818	NA
4821	NA
4823	NA
4825	NA
4827	NA
4830	NA
4834	NA
4834	NA
4836	NA
4838	NA
4838	NA
4841	NA
4843	NA
4845	NA
4850	NA
4850	NA
4852	NA
4852	NA
4852	NA
4854	NA
4856	NA
4856	NA
4858	NA
4858	NA
4865	NA
4865	NA
4870	NA
4870	NA
4870	NA
4874	NA
4878	NA
4881	NA
4883	NA
4885	NA
4885	NA
4887	NA
4890	NA
4892	NA
4898	NA
4898	NA
4904	NA
4904	NA
4906	NA
4915	NA
4919	NA
4919	NA
4920	NA
4920	NA
4922	NA
4922	NA
4922	NA
4922	NA
4924	NA
4928	NA
4931	NA
4931	NA
4931	NA
4940	NA
4940	NA
4946	NA
4946	NA
4948	NA
4951	NA
4951	NA
4951	NA
4953	NA
4953	NA
4955	NA
4957	NA
4957	NA
4957	NA
4964	NA
4966	NA
4971	NA
4973	NA
4973	NA
4977	NA
4980	NA
4980	NA
4982	NA
4982	NA
4984	NA
4988	NA
4997	NA
5000	NA
5000	NA
5000	NA
5000	NA
5002	NA
5002	NA
5004	NA
5011	NA
5013	NA
5013	NA
5013	NA
5015	NA
5015	NA
5017	NA
5020	NA
5022	NA
5024	NA
5026	NA
5028	NA
5028	NA
5028	NA
5033	NA
5037	NA
5037	NA
5039	NA
5040	NA
5042	NA
5044	NA
5044	NA
5046	NA
5048	NA
5053	NA
5059	NA
5060	NA
5060	NA
5064	NA
5064	NA
5066	NA
5068	NA
5068	NA
5075	NA
5077	NA
5077	NA
5079	NA
5079	NA
5080	NA
5082	NA
5082	NA
5086	NA
5088	NA
5091	NA
5093	NA
5093	NA
5093	NA
5093	NA
5097	NA
5101	NA
5105	NA
5105	NA
5109	NA
5112	NA
5121	NA
5123	NA
5127	NA
5129	NA
5130	NA
5132	NA
5136	NA
5141	NA
5141	NA
5141	NA
5141	NA
5141	NA
5149	NA
5149	NA
5150	NA
5150	NA
5150	NA
5156	NA
5158	NA
5163	NA
5163	NA
5165	NA
5165	NA
5167	NA
5170	NA
5176	NA
5176	NA
5178	NA
5178	NA
5183	NA
5183	NA
5183	NA
5185	NA
5190	NA
5192	NA
5192	NA
5194	NA
5194	NA
5194	NA
5196	NA
5196	NA
5198	NA
5198	NA
5200	NA
5200	NA
5202	NA
5202	NA
5204	NA
5206	NA
5215	NA
5215	NA
5219	NA
5219	NA
5219	NA
5220	NA
5228	NA
5233	NA
5235	NA
5235	NA
5235	NA
5235	NA
5239	NA
5242	NA
5242	NA
5244	NA
5246	NA
5246	NA
5248	NA
5253	NA
5253	NA
5255	NA
5257	NA
5260	NA
5266	NA
5271	NA
5271	NA
5271	NA
5273	NA
5273	NA
5277	NA
5277	NA
5282	NA
5282	NA
5284	NA
5288	NA
5293	NA
5295	NA
5299	NA
5301	NA
5301	NA
5301	NA
5305	NA
5307	NA
5310	NA
5312	NA
5318	NA
5321	NA
5325	NA
5325	NA
5329	NA
5329	NA
5330	NA
5330	NA
5336	NA
5338	NA
5341	NA
5341	NA
5343	NA
5350	NA
5352	NA
5354	NA
5354	NA
5356	NA
5356	NA
5367	NA
5370	NA
5372	NA
5374	NA
5376	NA
5381	NA
5383	NA
5383	NA
5392	NA
5392	NA
5392	NA
5398	NA
5398	NA
5400	NA
5404	NA
5406	NA
5406	NA
5411	NA
5415	NA
5419	NA
5422	NA
5428	NA
5431	NA
5433	NA
5435	NA
5437	NA
5439	NA
5439	NA
5440	NA
5442	NA
5446	NA
5451	NA
5453	NA
5455	NA
5457	NA
5457	NA
5459	NA
5459	NA
5460	NA
5462	NA
5477	NA
5477	NA
5480	NA
5484	NA
5486	NA
5491	NA
5491	NA
5491	NA
5493	NA
5493	NA
5495	NA
5495	NA
5495	NA
5499	NA
5499	NA
5501	NA
5503	NA
5503	NA
5505	NA
5507	NA
5507	NA
5509	NA
5512	NA
5516	NA
5518	NA
5518	NA
5518	NA
5529	NA
5530	NA
5532	NA
5532	NA
5534	NA
5536	NA
5538	NA
5541	NA
5541	NA
5543	NA
5545	NA
5549	NA
5549	NA
5550	NA
5554	NA
5554	NA
5554	NA
5556	NA
5558	NA
5561	NA
5563	NA
5563	NA
5563	NA
5563	NA
5565	NA
5567	NA
5567	NA
5576	NA
5583	NA
5583	NA
5583	NA
5585	NA
5587	NA
5589	NA
5592	NA
5594	NA
5596	NA
5596	NA
5598	NA
5600	NA
5600	NA
5602	NA
5602	NA
5602	NA
5604	NA
5604	NA
5611	NA
5615	NA
5615	NA
5615	NA
5615	NA
5615	NA
5617	NA
5617	NA
5619	NA
5619	NA
5620	NA
5628	NA
5628	NA
5631	NA
5631	NA
5631	NA
5639	NA
5639	NA
5640	NA
5640	NA
5640	NA
5642	NA
5642	NA
5644	NA
5648	NA
5648	NA
5653	NA
5655	NA
5655	NA
5659	NA
5660	NA
5666	NA
5666	NA
5673	NA
5679	NA
5680	NA
5682	NA
5682	NA
5684	NA
5686	NA
5686	NA
5688	NA
5693	NA
5693	NA
5699	NA
5701	NA
5701	NA
5701	NA
5703	NA
5703	NA
5714	NA
5714	NA
5716	NA
5718	NA
5721	NA
5721	NA
5721	NA
5725	NA
5725	NA
5727	NA
5729	NA
5730	NA
5734	NA
5738	NA
5738	NA
5741	NA
5743	NA
5745	NA
5749	NA
5749	NA
5752	NA
5752	NA
5761	NA
5763	NA
5769	NA
5769	NA
5770	NA
5772	NA
5772	NA
5774	NA
5774	NA
5774	NA
5776	NA
5776	NA
5776	NA
5781	NA
5783	NA
5783	NA
5785	NA
5789	NA
5790	NA
5790	NA
5792	NA
5798	NA
5798	NA
5802	NA
5804	NA
5806	NA
5806	NA
5806	NA
5808	NA
5811	NA
5811	NA
5813	NA
5815	NA
5817	NA
5824	NA
5824	NA
5824	NA
5824	NA
5828	NA
5828	NA
5833	NA
5835	NA
5835	NA
5837	NA
5837	NA
5840	NA
5840	NA
5842	NA
5844	NA
5857	NA
5857	NA
5859	NA
5859	NA
5866	NA
5875	NA
5877	NA
5879	NA
5880	NA
5882	NA
5884	NA
5888	NA
5888	NA
5891	NA
5893	NA
5895	NA
5897	NA
5899	NA
5901	NA
5901	NA
5903	NA
5905	NA
5909	NA
5909	NA
5914	NA
5921	NA
5921	NA
5925	NA
5927	NA
5932	NA
5932	NA
5932	NA
5932	NA
5945	NA
5947	NA
5949	NA
5949	NA
5950	NA
5950	NA
5954	NA
5954	NA
5956	NA
5958	NA
5958	NA
5958	NA
5958	NA
5958	NA
5958	NA
5961	NA
5961	NA
5965	NA
5965	NA
5965	NA
5969	NA
5969	NA
5969	NA
5970	NA
5970	NA
5972	NA
5974	NA
5974	NA
5974	NA
5978	NA
5978	NA
5981	NA
5981	NA
5983	NA
5985	NA
5985	NA
5987	NA
5987	NA
5987	NA
5990	NA
5990	NA
5992	NA
5996	NA
5998	NA
6003	NA
6003	NA
6003	NA
6003	NA
6003	NA
6007	NA
6007	NA
6009	NA
6010	NA
6014	NA
6014	NA
6014	NA
6016	NA
6021	NA
6023	NA
6025	NA
6029	NA
6029	NA
6032	NA
6032	NA
6032	NA
6034	NA
6036	NA
6036	NA
6036	NA
6036	NA
6038	NA
6047	NA
6049	NA
6050	NA
6054	NA
6054	NA
6056	NA
6058	NA
6058	NA
6058	NA
6058	NA
6063	NA
6063	NA
6070	NA
6070	NA
6072	NA
6072	NA
6078	NA
6081	NA
6083	NA
6089	NA
6092	NA
6094	NA
6098	NA
6098	NA
6100	NA
6100	NA
6100	NA
6102	NA
6102	NA
6102	NA
6104	NA
6108	NA
6108	NA
6108	NA
6111	NA
6113	NA
6113	NA
6115	NA
6117	NA
6119	NA
6119	NA
6122	NA
6131	NA
6133	NA
6133	NA
6135	NA
6135	NA
6135	NA
6139	NA
6140	NA
6140	NA
6140	NA
6140	NA
6142	NA
6144	NA
6144	NA
6144	NA
6146	NA
6148	NA
6148	NA
6153	NA
6155	NA
6157	NA
6157	NA
6159	NA
6159	NA
6160	NA
6164	NA
6171	NA
6171	NA
6175	NA
6180	NA
6180	NA
6186	NA
6188	NA
6191	NA
6193	NA
6193	NA
6193	NA
6193	NA
6195	NA
6195	NA
6195	NA
6197	NA
6197	NA
6201	NA
6201	NA
6203	NA
6203	NA
6203	NA
6203	NA
6207	NA
6207	NA
6209	NA
6210	NA
6210	NA
6210	NA
6212	NA
6214	NA
6214	NA
6214	NA
6216	NA
6218	NA
6218	NA
6221	NA
6221	NA
6223	NA
6223	NA
6225	NA
6225	NA
6225	NA
6229	NA
6229	NA
6232	NA
6232	NA
6232	NA
6234	NA
6236	NA
6236	NA
6236	NA
6238	NA
6238	NA
6238	NA
6243	NA
6245	NA
6245	NA
6247	NA
6250	NA
6252	NA
6252	NA
6254	NA
6254	NA
6256	NA
6261	NA
6263	NA
6267	NA
6267	NA
6269	NA
6272	NA
6274	NA
6276	NA
6276	NA
6278	NA
6281	NA
6285	NA
6292	NA
6296	NA
6300	NA
6304	NA
6304	NA
6306	NA
6306	NA
6308	NA
6308	NA
6308	NA
6313	NA
6315	NA
6315	NA
6317	NA
6322	NA
6326	NA
6326	NA
6326	NA
6331	NA
6333	NA
6333	NA
6335	NA
6342	NA
6342	NA
6344	NA
6355	NA
6357	NA
6359	NA
6359	NA
6362	NA
6362	NA
6366	NA
6368	NA
6371	NA
6377	NA
6379	NA
6379	NA
6380	NA
6380	NA
6382	NA
6386	NA
6386	NA
6386	NA
6391	NA
6397	NA
6407	NA
6409	NA
6410	NA
6414	NA
6414	NA
6414	NA
6416	NA
6416	NA
6418	NA
6418	NA
6429	NA
6429	NA
6430	NA
6432	NA
6434	NA
6438	NA
6438	NA
6441	NA
6441	NA
6441	NA
6443	NA
6447	NA
6447	NA
6449	NA
6450	NA
6452	NA
6452	NA
6454	NA
6454	NA
6454	NA
6456	NA
6467	NA
6467	NA
6469	NA
6469	NA
6472	NA
6472	NA
6476	NA
6476	NA
6481	NA
6481	NA
6483	NA
6483	NA
6487	NA
6489	NA
6489	NA
6489	NA
6494	NA
6494	NA
6494	NA
6500	NA
6500	NA
6502	NA
6502	NA
6504	NA
6506	NA
6515	NA
6515	NA
6519	NA
6520	NA
6526	NA
6531	NA
6533	NA
6535	NA
6537	NA
6537	NA
6539	NA
6540	NA
6542	NA
6544	NA
6544	NA
6546	NA
6551	NA
6551	NA
6553	NA
6555	NA
6555	NA
6557	NA
6560	NA
6560	NA
6562	NA
6566	NA
6568	NA
6571	NA
6571	NA
6571	NA
6573	NA
6573	NA
6575	NA
6577	NA
6577	NA
6577	NA
6579	NA
6579	NA
6580	NA
6580	NA
6582	NA
6582	NA
6584	NA
6584	NA
6586	NA
6586	NA
6588	NA
6593	NA
6595	NA
6595	NA
6597	NA
6597	NA
6599	NA
6607	NA
6610	NA
6612	NA
6612	NA
6616	NA
6618	NA
6625	NA
6627	NA
6627	NA
6629	NA
6632	NA
6632	NA
6634	NA
6636	NA
6638	NA
6641	NA
6643	NA
6645	NA
6647	NA
6649	NA
6649	NA
6650	NA
6652	NA
6652	NA
6652	NA
6654	NA
6654	NA
6656	NA
6656	NA
6656	NA
6663	NA
6663	NA
6669	NA
6669	NA
6669	NA
6669	NA
6670	NA
6676	NA
6676	NA
6676	NA
6681	NA
6681	NA
6683	NA
6685	NA
6685	NA
6687	NA
6692	NA
6694	NA
6696	NA
6696	NA
6698	NA
6700	NA
6700	NA
6700	NA
6700	NA
6702	NA
6706	NA
6706	NA
6706	NA
6708	NA
6708	NA
6713	NA
6715	NA
6715	NA
6717	NA
6719	NA
6720	NA
6720	NA
6720	NA
6720	NA
6722	NA
6722	NA
6722	NA
6722	NA
6722	NA
6724	NA
6724	NA
6726	NA
6731	NA
6740	NA
6742	NA
6746	NA
6748	NA
6751	NA
6753	NA
6757	NA
6757	NA
6759	NA
6759	NA
6760	NA
6760	NA
6766	NA
6768	NA
6773	NA
6777	NA
6779	NA
6780	NA
6784	NA
6784	NA
6784	NA
6786	NA
6786	NA
6788	NA
6788	NA
6788	NA
6801	NA
6801	NA
6801	NA
6803	NA
6805	NA
6810	NA
6814	NA
6814	NA
6823	NA
6825	NA
6829	NA
6829	NA
6832	NA
6838	NA
6838	NA
6845	NA
6849	NA
6850	NA
6852	NA
6852	NA
6854	NA
6854	NA
6856	NA
6861	NA
6865	NA
6865	NA
6872	NA
6876	NA
6878	NA
6878	NA
6881	NA
6883	NA
6883	NA
6883	NA
6883	NA
6885	NA
6887	NA
6887	NA
6890	NA
6892	NA
6896	NA
6908	NA
6908	NA
6911	NA
6915	NA
6922	NA
6924	NA
6924	NA
6924	NA
6926	NA
6928	NA
6928	NA
6928	NA
6931	NA
6933	NA
6933	NA
6935	NA
6937	NA
6942	NA
6948	NA
6948	NA
6948	NA
6951	NA
6957	NA
6957	NA
6959	NA
6959	NA
6959	NA
6960	NA
6960	NA
6962	NA
6971	NA
6971	NA
6975	NA
6977	NA
6979	NA
6980	NA
6982	NA
6982	NA
6984	NA
6988	NA
6988	NA
6991	NA
6991	NA
6991	NA
6993	NA
6999	NA
7000	NA
7000	NA
7004	NA
7004	NA
7006	NA
7006	NA
7008	NA
7008	NA
7008	NA
7008	NA
7008	NA
7011	NA
7013	NA
7017	NA
7017	NA
7017	NA
7020	NA
7020	NA
7020	NA
7020	NA
7028	NA
7031	NA
7031	NA
7031	NA
7031	NA
7033	NA
7035	NA
7035	NA
7039	NA
7040	NA
7042	NA
7044	NA
7044	NA
7046	NA
7046	NA
7051	NA
7053	NA
7053	NA
7057	NA
7060	NA
7066	NA
7068	NA
7068	NA
7068	NA
7073	NA
7075	NA
7077	NA
7086	NA
7086	NA
7088	NA
7088	NA
7091	NA
7091	NA
7097	NA
7101	NA
7101	NA
7105	NA
7105	NA
7109	NA
7121	NA
7123	NA
7123	NA
7123	NA
7125	NA
7130	NA
7130	NA
7130	NA
7130	NA
7130	NA
7130	NA
7132	NA
7134	NA
7136	NA
7138	NA
7141	NA
7143	NA
7145	NA
7149	NA
7150	NA
7152	NA
7152	NA
7154	NA
7158	NA
7158	NA
7165	NA
7165	NA
7167	NA
7167	NA
7167	NA
7172	NA
7174	NA
7174	NA
7176	NA
7176	NA
7178	NA
7178	NA
7178	NA
7183	NA
7189	NA
7190	NA
7192	NA
7192	NA
7194	NA
7194	NA
7196	NA
7196	NA
7200	NA
7200	NA
7200	NA
7202	NA
7202	NA
7202	NA
7202	NA
7206	NA
7211	NA
7213	NA
7215	NA
7215	NA
7217	NA
7217	NA
7219	NA
7220	NA
7224	NA
7226	NA
7226	NA
7228	NA
7231	NA
7233	NA
7248	NA
7251	NA
7253	NA
7257	NA
7257	NA
7257	NA
7260	NA
7260	NA
7266	NA
7271	NA
7273	NA
7273	NA
7277	NA
7277	NA
7279	NA
7280	NA
7286	NA
7286	NA
7288	NA
7291	NA
7293	NA
7295	NA
7297	NA
7301	NA
7305	NA
7307	NA
7309	NA
7310	NA
7310	NA
7312	NA
7314	NA
7316	NA
7321	NA
7323	NA
7323	NA
7325	NA
7325	NA
7327	NA
7327	NA
7329	NA
7332	NA
7332	NA
7334	NA
7336	NA
7338	NA
7343	NA
7343	NA
7347	NA
7347	NA
7349	NA
7350	NA
7350	NA
7352	NA
7354	NA
7358	NA
7358	NA
7358	NA
7361	NA
7363	NA
7365	NA
7367	NA
7367	NA
7369	NA
7369	NA
7370	NA
7370	NA
7372	NA
7372	NA
7374	NA
7374	NA
7376	NA
7381	NA
7385	NA
7385	NA
7387	NA
7389	NA
7389	NA
7390	NA
7392	NA
7392	NA
7396	NA
7396	NA
7398	NA
7402	NA
7402	NA
7411	NA
7415	NA
7417	NA
7419	NA
7422	NA
7422	NA
7424	NA
7426	NA
7428	NA
7428	NA
7431	NA
7431	NA
7433	NA
7435	NA
7437	NA
7437	NA
7440	NA
7446	NA
7448	NA
7451	NA
7451	NA
7455	NA
7457	NA
7462	NA
7464	NA
7466	NA
7466	NA
7466	NA
7468	NA
7471	NA
7471	NA
7471	NA
7473	NA
7477	NA
7477	NA
7480	NA
7480	NA
7482	NA
7482	NA
7484	NA
7484	NA
7491	NA
7491	NA
7491	NA
7495	NA
7495	NA
7503	NA
7509	NA
7509	NA
7512	NA
7512	NA
7514	NA
7514	NA
7514	NA
7518	NA
7521	NA
7523	NA
7527	NA
7527	NA
7530	NA
7530	NA
7532	NA
7536	NA
7538	NA
7545	NA
7547	NA
7547	NA
7547	NA
7552	NA
7552	NA
7552	NA
7552	NA
7554	NA
7563	NA
7565	NA
7567	NA
7569	NA
7570	NA
7570	NA
7570	NA
7570	NA
7570	NA
7572	NA
7574	NA
7578	NA
7581	NA
7583	NA
7585	NA
7585	NA
7587	NA
7587	NA
7587	NA
7589	NA
7594	NA
7594	NA
7600	NA
7600	NA
7602	NA
7602	NA
7604	NA
7604	NA
7604	NA
7606	NA
7606	NA
7606	NA
7608	NA
7611	NA
7611	NA
7617	NA
7624	NA
7624	NA
7626	NA
7631	NA
7633	NA
7633	NA
7633	NA
7637	NA
7639	NA
7640	NA
7642	NA
7644	NA
7644	NA
7646	NA
7646	NA
7646	NA
7646	NA
7653	NA
7655	NA
7657	NA
7657	NA
7657	NA
7657	NA
7659	NA
7659	NA
7659	NA
7662	NA
7662	NA
7662	NA
7662	NA
7664	NA
7664	NA
7666	NA
7668	NA
7673	NA
7675	NA
7677	NA
7679	NA
7679	NA
7679	NA
7680	NA
7682	NA
7684	NA
7691	NA
7695	NA
7701	NA
7701	NA
7703	NA
7703	NA
7703	NA
7705	NA
7712	NA
7716	NA
7721	NA
7723	NA
7723	NA
7727	NA
7729	NA
7730	NA
7734	NA
7734	NA
7738	NA
7743	NA
7749	NA
7749	NA
7750	NA
7754	NA
7756	NA
7761	NA
7763	NA
7763	NA
7765	NA
7765	NA
7765	NA
7767	NA
7769	NA
7769	NA
7770	NA
7770	NA
7770	NA
7772	NA
7774	NA
7778	NA
7785	NA
7789	NA
7789	NA
7790	NA
7792	NA
7794	NA
7796	NA
7798	NA
7798	NA
7802	NA
7802	NA
7806	NA
7808	NA
7811	NA
7811	NA
7813	NA
7813	NA
7815	NA
7817	NA
7820	NA
7820	NA
7822	NA
7822	NA
7826	NA
7831	NA
7833	NA
7835	NA
7837	NA
7839	NA
7840	NA
7840	NA
7840	NA
7848	NA
7848	NA
7851	NA
7851	NA
7851	NA
7853	NA
7853	NA
7857	NA
7859	NA
7860	NA
7860	NA
7862	NA
7862	NA
7864	NA
7864	NA
7866	NA
7868	NA
7868	NA
7871	NA
7871	NA
7873	NA
7873	NA
7875	NA
7877	NA
7877	NA
7877	NA
7877	NA
7880	NA
7884	NA
7891	NA
7891	NA
7893	NA
7897	NA
7897	NA
7899	NA
7899	NA
7899	NA
7901	NA
7907	NA
7909	NA
7914	NA
7916	NA
7921	NA
7923	NA
7927	NA
7932	NA
7932	NA
7941	NA
7941	NA
7945	NA
7947	NA
7949	NA
7950	NA
7950	NA
7950	NA
7952	NA
7952	NA
7954	NA
7956	NA
7961	NA
7963	NA
7965	NA
7967	NA
7970	NA
7974	NA
7976	NA
7976	NA
7978	NA
7981	NA
7987	NA
7989	NA
7989	NA
7989	NA
7989	NA
7990	NA
7992	NA
7994	NA
8001	NA
8003	NA
8003	NA
8009	NA
8009	NA
8012	NA
8014	NA
8014	NA
8016	NA
8023	NA
8023	NA
8025	NA
8025	NA
8027	NA
8029	NA
8030	NA
8030	NA
8032	NA
8036	NA
8041	NA
8041	NA
8041	NA
8043	NA
8043	NA
8050	NA
8052	NA
8052	NA
8058	NA
8061	NA
8061	NA
8061	NA
8069	NA
8070	NA
8070	NA
8070	NA
8074	NA
8081	NA
8081	NA
8083	NA
8085	NA
8087	NA
8087	NA
8090	NA
8090	NA
8092	NA
8092	NA
8098	NA
8100	NA
8100	NA
8102	NA
8102	NA
8106	NA
8106	NA
8108	NA
8108	NA
8111	NA
8111	NA
8111	NA
8113	NA
8113	NA
8113	NA
8113	NA
8117	NA
8117	NA
8122	NA
8128	NA
8131	NA
8135	NA
8137	NA
8139	NA
8139	NA
8140	NA
8146	NA
8146	NA
8151	NA
8159	NA
8160	NA
8160	NA
8160	NA
8162	NA
8166	NA
8171	NA
8171	NA
8175	NA
8177	NA
8180	NA
8180	NA
8180	NA
8182	NA
8182	NA
8188	NA
8188	NA
8193	NA
8195	NA
8197	NA
8199	NA
8201	NA
8203	NA
8205	NA
8205	NA
8207	NA
8207	NA
8207	NA
8209	NA
8210	NA
8212	NA
8218	NA
8221	NA
8223	NA
8227	NA
8234	NA
8234	NA
8236	NA
8238	NA
8241	NA
8241	NA
8241	NA
8243	NA
8245	NA
8247	NA
8249	NA
8254	NA
8258	NA
8261	NA
8263	NA
8267	NA
8270	NA
8272	NA
8274	NA
8274	NA
8274	NA
8278	NA
8281	NA
8283	NA
8283	NA
8285	NA
8285	NA
8285	NA
8290	NA
8290	NA
8290	NA
8292	NA
8292	NA
8298	NA
8302	NA
8308	NA
8311	NA
8313	NA
8315	NA
8320	NA
8322	NA
8328	NA
8328	NA
8331	NA
8339	NA
8339	NA
8344	NA
8344	NA
8346	NA
8346	NA
8353	NA
8353	NA
8355	NA
8355	NA
8359	NA
8359	NA
8359	NA
8364	NA
8366	NA
8371	NA
8371	NA
8373	NA
8373	NA
8373	NA
8375	NA
8377	NA
8379	NA
8380	NA
8380	NA
8380	NA
8382	NA
8382	NA
8384	NA
8384	NA
8388	NA
8393	NA
8393	NA
8395	NA
8399	NA
8403	NA
8403	NA
8403	NA
8403	NA
8403	NA
8403	NA
8407	NA
8409	NA
8410	NA
8412	NA
8418	NA
8418	NA
8421	NA
8423	NA
8425	NA
8427	NA
8427	NA
8427	NA
8430	NA
8436	NA
8436	NA
8436	NA
8438	NA
8438	NA
8438	NA
8441	NA
8445	NA
8445	NA
8445	NA
8445	NA
8449	NA
8454	NA
8458	NA
8461	NA
8463	NA
8463	NA
8467	NA
8474	NA
8476	NA
8481	NA
8481	NA
8483	NA
8483	NA
8485	NA
8485	NA
8485	NA
8485	NA
8487	NA
8487	NA
8487	NA
8489	NA
8494	NA
8496	NA
8496	NA
8504	NA
8504	NA
8504	NA
8506	NA
8513	NA
8517	NA
8520	NA
8520	NA
8522	NA
8522	NA
8522	NA
8524	NA
8528	NA
8533	NA
8535	NA
8537	NA
8539	NA
8539	NA
8540	NA
8542	NA
8546	NA
8551	NA
8555	NA
8557	NA
8562	NA
8562	NA
8568	NA
8573	NA
8573	NA
8575	NA
8577	NA
8580	NA
8582	NA
8584	NA
8586	NA
8591	NA
8593	NA
8595	NA
8599	NA
8603	NA
8603	NA
8607	NA
8607	NA
8607	NA
8609	NA
8610	NA
8612	NA
8616	NA
8618	NA
8623	NA
8630	NA
8630	NA
8634	NA
8634	NA
8634	NA
8634	NA
8636	NA
8638	NA
8641	NA
8641	NA
8643	NA
8643	NA
8645	NA
8647	NA
8647	NA
8647	NA
8649	NA
8649	NA
8652	NA
8652	NA
8652	NA
8654	NA
8654	NA
8654	NA
8656	NA
8656	NA
8656	NA
8658	NA
8661	NA
8665	NA
8665	NA
8667	NA
8669	NA
8670	NA
8670	NA
8672	NA
8672	NA
8674	NA
8674	NA
8676	NA
8681	NA
8683	NA
8687	NA
8689	NA
8689	NA
8692	NA
8694	NA
8702	NA
8704	NA
8704	NA
8706	NA
8706	NA
8706	NA
8708	NA
8713	NA
8715	NA
8715	NA
8720	NA
8720	NA
8726	NA
8726	NA
8726	NA
8726	NA
8731	NA
8731	NA
8731	NA
8733	NA
8735	NA
8737	NA
8740	NA
8740	NA
8744	NA
8746	NA
8748	NA
8748	NA
8748	NA
8748	NA
8748	NA
8751	NA
8751	NA
8759	NA
8759	NA
8762	NA
8762	NA
8764	NA
8768	NA
8768	NA
8771	NA
8771	NA
8773	NA
8773	NA
8773	NA
8775	NA
8775	NA
8779	NA
8779	NA
8779	NA
8780	NA
8782	NA
8782	NA
8784	NA
8784	NA
8784	NA
8784	NA
8788	NA
8788	NA
8791	NA
8793	NA
8793	NA
8801	NA
8803	NA
8803	NA
8809	NA
8812	NA
8814	NA
8814	NA
8814	NA
8816	NA
8816	NA
8818	NA
8821	NA
8821	NA
8821	NA
8823	NA
8825	NA
8827	NA
8829	NA
8830	NA
8832	NA
8834	NA
8836	NA
8836	NA
8841	NA
8841	NA
8843	NA
8847	NA
8847	NA
8847	NA
8849	NA
8850	NA
8854	NA
8856	NA
8865	NA
8865	NA
8865	NA
8865	NA
8867	NA
8867	NA
8869	NA
8869	NA
8872	NA
8872	NA
8872	NA
8876	NA
8878	NA
8881	NA
8883	NA
8887	NA
8889	NA
8889	NA
8890	NA
8892	NA
8892	NA
8896	NA
8900	NA
8904	NA
8906	NA
8906	NA
8906	NA
8908	NA
8911	NA
8911	NA
8911	NA
8913	NA
8913	NA
8915	NA
8917	NA
8917	NA
8917	NA
8919	NA
8920	NA
8922	NA
8922	NA
8924	NA
8924	NA
8924	NA
8924	NA
8926	NA
8926	NA
8931	NA
8931	NA
8937	NA
8937	NA
8939	NA
8940	NA
8946	NA
8951	NA
8955	NA
8957	NA
8959	NA
8960	NA
8964	NA
8966	NA
8968	NA
8971	NA
8973	NA
8973	NA
8975	NA
8979	NA
8980	NA
8980	NA
8984	NA
8986	NA
8988	NA
8993	NA
8993	NA
8993	NA
8995	NA
8995	NA
8997	NA
8999	NA
9000	NA
9002	NA
9004	NA
9004	NA
9011	NA
9013	NA
9015	NA
9017	NA
9017	NA
9019	NA
9020	NA
9026	NA
9028	NA
9031	NA
9033	NA
9035	NA
9037	NA
9037	NA
9040	NA
9042	NA
9042	NA
9042	NA
9044	NA
9046	NA
9046	NA
9048	NA
9051	NA
9051	NA
9055	NA
9059	NA
9060	NA
9060	NA
9060	NA
9064	NA
9064	NA
9066	NA
9068	NA
9068	NA
9071	NA
9071	NA
9075	NA
9077	NA
9080	NA
9082	NA
9084	NA
9084	NA
9084	NA
9086	NA
9086	NA
9086	NA
9088	NA
9088	NA
9091	NA
9093	NA
9095	NA
9095	NA
9097	NA
9097	NA
9099	NA
9099	NA
9101	NA
9103	NA
9105	NA
9107	NA
9107	NA
9107	NA
9109	NA
9109	NA
9110	NA
9112	NA
9112	NA
9114	NA
9114	NA
9114	NA
9116	NA
9121	NA
9127	NA
9129	NA
9129	NA
9134	NA
9145	NA
9150	NA
9150	NA
9152	NA
9154	NA
9156	NA
9161	NA
9161	NA
9163	NA
9163	NA
9167	NA
9170	NA
9172	NA
9174	NA
9176	NA
9176	NA
9181	NA
9183	NA
9183	NA
9187	NA
9187	NA
9189	NA
9189	NA
9189	NA
9190	NA
9192	NA
9200	NA
9200	NA
9202	NA
9202	NA
9208	NA
9208	NA
9211	NA
9211	NA
9213	NA
9213	NA
9215	NA
9219	NA
9220	NA
9220	NA
9222	NA
9222	NA
9224	NA
9224	NA
9226	NA
9228	NA
9228	NA
9231	NA
9231	NA
9233	NA
9235	NA
9235	NA
9237	NA
9239	NA
9242	NA
9244	NA
9244	NA
9257	NA
9259	NA
9260	NA
9260	NA
9262	NA
9266	NA
9271	NA
9277	NA
9279	NA
9282	NA
9284	NA
9284	NA
9286	NA
9286	NA
9288	NA
9291	NA
9299	NA
9299	NA
9303	NA
9303	NA
9305	NA
9305	NA
9305	NA
9309	NA
9310	NA
9316	NA
9316	NA
9321	NA
9323	NA
9323	NA
9325	NA
9325	NA
9327	NA
9329	NA
9332	NA
9332	NA
9336	NA
9336	NA
9338	NA
9338	NA
9341	NA
9341	NA
9343	NA
9352	NA
9354	NA
9356	NA
9356	NA
9356	NA
9361	NA
9361	NA
9361	NA
9365	NA
9369	NA
9370	NA
9370	NA
9370	NA
9372	NA
9376	NA
9376	NA
9376	NA
9376	NA
9378	NA
9385	NA
9387	NA
9389	NA
9389	NA
9390	NA
9390	NA
9394	NA
9394	NA
9398	NA
9400	NA
9402	NA
9402	NA
9406	NA
9408	NA
9413	NA
9415	NA
9415	NA
9417	NA
9420	NA
9420	NA
9420	NA
9422	NA
9422	NA
9422	NA
9426	NA
9433	NA
9437	NA
9440	NA
9444	NA
9446	NA
9451	NA
9453	NA
9453	NA
9457	NA
9460	NA
9460	NA
9462	NA
9464	NA
9466	NA
9468	NA
9473	NA
9473	NA
9473	NA
9475	NA
9477	NA
9477	NA
9479	NA
9484	NA
9484	NA
9493	NA
9495	NA
9499	NA
9499	NA
9499	NA
9501	NA
9503	NA
9505	NA
9509	NA
9509	NA
9510	NA
9514	NA
9516	NA
9523	NA
9523	NA
9527	NA
9534	NA
9536	NA
9536	NA
9536	NA
9538	NA
9545	NA
9545	NA
9545	NA
9550	NA
9550	NA
9552	NA
9552	NA
9554	NA
9556	NA
9561	NA
9561	NA
9563	NA
9567	NA
9569	NA
9569	NA
9570	NA
9570	NA
9572	NA
9572	NA
9572	NA
9574	NA
9574	NA
9574	NA
9576	NA
9578	NA
9578	NA
9578	NA
9578	NA
9578	NA
9581	NA
9581	NA
9583	NA
9585	NA
9587	NA
9587	NA
9587	NA
9589	NA
9592	NA
9594	NA
9594	NA
9596	NA
9598	NA
9598	NA
9598	NA
9604	NA
9606	NA
9606	NA
9608	NA
9608	NA
9611	NA
9613	NA
9613	NA
9617	NA
9619	NA
9622	NA
9622	NA
9622	NA
9622	NA
9628	NA
9628	NA
9633	NA
9633	NA
9637	NA
9639	NA
9642	NA
9642	NA
9644	NA
9646	NA
9646	NA
9648	NA
9651	NA
9653	NA
9655	NA
9657	NA
9659	NA
9660	NA
9662	NA
9664	NA
9668	NA
9675	NA
9675	NA
9677	NA
9677	NA
9679	NA
9679	NA
9680	NA
9684	NA
9684	NA
9686	NA
9688	NA
9693	NA
9695	NA
9695	NA
9695	NA
9695	NA
9699	NA
9701	NA
9703	NA
9703	NA
9705	NA
9707	NA
9710	NA
9712	NA
9714	NA
9716	NA
9725	NA
9727	NA
9727	NA
9729	NA
9730	NA
9730	NA
9734	NA
9736	NA
9738	NA
9743	NA
9749	NA
9750	NA
9752	NA
9754	NA
9756	NA
9756	NA
9758	NA
9761	NA
9761	NA
9761	NA
9763	NA
9763	NA
9763	NA
9763	NA
9765	NA
9765	NA
9765	NA
9767	NA
9774	NA
9774	NA
9776	NA
9783	NA
9783	NA
9785	NA
9785	NA
9785	NA
9789	NA
9789	NA
9789	NA
9792	NA
9798	NA
9800	NA
9800	NA
9802	NA
9806	NA
9808	NA
9811	NA
9811	NA
9815	NA
9817	NA
9820	NA
9822	NA
9824	NA
9826	NA
9826	NA
9828	NA
9828	NA
9835	NA
9837	NA
9837	NA
9844	NA
9844	NA
9846	NA
9848	NA
9848	NA
9853	NA
9855	NA
9859	NA
9862	NA
9862	NA
9864	NA
9864	NA
9866	NA
9868	NA
9868	NA
9871	NA
9873	NA
9875	NA
9877	NA
9877	NA
9879	NA
9880	NA
9886	NA
9888	NA
9888	NA
9891	NA
9891	NA
9893	NA
9893	NA
9895	NA
9895	NA
9897	NA
9903	NA
9903	NA
9905	NA
9907	NA
9909	NA
9910	NA
9912	NA
9914	NA
9918	NA
9921	NA
9923	NA
9923	NA
9923	NA
9925	NA
9930	NA
9934	NA
9934	NA
9934	NA
9936	NA
9936	NA
9936	NA
9938	NA
9941	NA
9945	NA
9945	NA
9947	NA
9954	NA
9958	NA
9958	NA
9958	NA
9961	NA
9967	NA
9969	NA
9969	NA
9970	NA
9972	NA
9974	NA
9976	NA
9978	NA
9981	NA
9981	NA
9981	NA
9983	NA
9983	NA
9983	NA
9985	NA
9985	NA
9987	NA
9987	NA
9992	NA
9992	NA
9992	NA
9994	NA
9994	NA
9996	NA
9998	NA
9998	NA

What happens if you have multiple reducers? Do you need additional steps? Explain.

If you have multiple reducers, then each reducer outputs results sorted by the keys that it receives; however, by default the reducers do not receive continuous ranges of keys so the results are divided between the reducer outputs and are only sorted within reducer outputs not among them. You would need to add a step to define how the keys are to be distributed to the reducers. For example, all integer keys between 0 and 4,999 could go to reducer 1 and 5,000 through 10,000 could go to reducer 2.


HW2.2: Count the occurrences of a single word in the Enron emails


In [125]:
'''
    HW2.2. Using the Enron data from HW1 and Hadoop MapReduce streaming, 
    write mapper/reducer pair that will determine the number of 
    occurrences of a single, user-specified word. 
    Examine the word “assistance” and report your results.
   
    - mapper.py counts all occurrences of a single word, and
    - reducer.py collates the counts of the single word.

    CROSSCHECK: >grep assistance enronemail_1h.txt|cut -d$'\t' -f4| grep assistance|wc -l
       8
'''

# make directory for problem and change to that dir
!mkdir ~/Documents/W261/hw2/hw2_2/
%cd ~/Documents/W261/hw2/hw2_2/
!cp ../enronemail_1h_cleaned.txt ./


mkdir: /Users/davidadams/Documents/W261/hw2/hw2_2/: File exists
/Users/davidadams/Documents/W261/hw2/hw2_2

In [126]:
%%writefile ./mapper.py
#!/usr/bin/python

import sys
import re
from collections import defaultdict

# regular expression for extracting word tokens from email content
WORD_RE = re.compile(r"[\w']+")

# Word to count passed in as command line argument
vocabwords = sys.argv[1].lower().split(' ')

# input as stdin
for line in sys.stdin:
    
    # email content is in last column of input file
    linelist = line.split('\t')
    content = linelist[-1]
    # extract words from content
    words = WORD_RE.findall(content.lower())
    
    # Initialize word counts
    vocabWordsCount = dict()
    for v in vocabwords:
        vocabWordsCount[v]=0
        
    # loop over words in email
    for w in words:
        if w in vocabWordsCount.keys():
            # if word is in vocab, increment count
            vocabWordsCount[w]+=1
    
    # output count of each vocab word in each email
    for k in vocabWordsCount.keys():
        print linelist[0]+'\t'+linelist[1]+'\t'+k+'\t'+str(vocabWordsCount[k])


Overwriting ./mapper.py

In [127]:
%%writefile reducer.py
#!/usr/bin/python
from operator import itemgetter
import sys

# initialize total count
total_count = 0

# input comes from STDIN
for line in sys.stdin:
    
    # get count from fourth column and increment total
    line = line.strip()
    count = int(line.split('\t')[3])
    total_count+=count

# output total count
print total_count


Overwriting reducer.py

In [132]:
# Run mapper and reducer cells first to write mapper.py and reducer.py

def hw2_2():
    
    # change to problem dir and copy data into dir
    %cd ~/Documents/W261/hw2/hw2_2/
    !cp ../enronemail_1h_cleaned.txt ./
    
    # put data file into HDFS
    !hdfs dfs -rm enronemail_1h_cleaned.txt
    !hdfs dfs -put enronemail_1h_cleaned.txt /user/davidadams
    
    # run Hadoop streaming mapreduce with mapper.py and reducer.py
    !hdfs dfs -rm -r hw2_2Output
    !hadoop jar ~/Documents/W261/hw2/hadoop-*streaming*.jar -mapper "mapper.py 'assistance'" -reducer reducer.py -input enronemail_1h_cleaned.txt -output hw2_2Output
    
    # show results
    total = !hdfs dfs -cat hw2_2Output/part-00000
    print "\n\nThere are %s emails that contain the word assistance" %total[-1]
    

hw2_2()


/Users/davidadams/Documents/W261/hw2/hw2_2
15/09/15 17:15:01 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:15:01 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted enronemail_1h_cleaned.txt
15/09/15 17:15:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:15:05 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:15:06 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted hw2_2Output
15/09/15 17:15:07 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:15:08 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
15/09/15 17:15:08 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
15/09/15 17:15:08 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
15/09/15 17:15:08 INFO mapred.FileInputFormat: Total input paths to process : 1
15/09/15 17:15:08 INFO mapreduce.JobSubmitter: number of splits:1
15/09/15 17:15:08 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1890290409_0001
15/09/15 17:15:09 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
15/09/15 17:15:09 INFO mapred.LocalJobRunner: OutputCommitter set in config null
15/09/15 17:15:09 INFO mapreduce.Job: Running job: job_local1890290409_0001
15/09/15 17:15:09 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter
15/09/15 17:15:09 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:15:09 INFO mapred.LocalJobRunner: Waiting for map tasks
15/09/15 17:15:09 INFO mapred.LocalJobRunner: Starting task: attempt_local1890290409_0001_m_000000_0
15/09/15 17:15:09 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:15:09 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:15:09 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:15:09 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/davidadams/enronemail_1h_cleaned.txt:0+203985
15/09/15 17:15:09 INFO mapred.MapTask: numReduceTasks: 1
15/09/15 17:15:09 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)
15/09/15 17:15:09 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100
15/09/15 17:15:09 INFO mapred.MapTask: soft limit at 83886080
15/09/15 17:15:09 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
15/09/15 17:15:09 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
15/09/15 17:15:09 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
15/09/15 17:15:09 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_2/./mapper.py, assistance]
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
15/09/15 17:15:09 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
15/09/15 17:15:09 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition
15/09/15 17:15:09 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir
15/09/15 17:15:09 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id
15/09/15 17:15:09 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:15:09 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:15:09 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:15:09 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:15:09 INFO streaming.PipeMapRed: Records R/W=100/1
15/09/15 17:15:09 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:15:09 INFO mapred.LocalJobRunner: 
15/09/15 17:15:09 INFO mapred.MapTask: Starting flush of map output
15/09/15 17:15:09 INFO mapred.MapTask: Spilling map output
15/09/15 17:15:09 INFO mapred.MapTask: bufstart = 0; bufend = 3772; bufvoid = 104857600
15/09/15 17:15:09 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26214000(104856000); length = 397/6553600
15/09/15 17:15:09 INFO mapred.MapTask: Finished spill 0
15/09/15 17:15:09 INFO mapred.Task: Task:attempt_local1890290409_0001_m_000000_0 is done. And is in the process of committing
15/09/15 17:15:09 INFO mapred.LocalJobRunner: Records R/W=100/1
15/09/15 17:15:09 INFO mapred.Task: Task 'attempt_local1890290409_0001_m_000000_0' done.
15/09/15 17:15:09 INFO mapred.LocalJobRunner: Finishing task: attempt_local1890290409_0001_m_000000_0
15/09/15 17:15:09 INFO mapred.LocalJobRunner: map task executor complete.
15/09/15 17:15:09 INFO mapred.LocalJobRunner: Waiting for reduce tasks
15/09/15 17:15:09 INFO mapred.LocalJobRunner: Starting task: attempt_local1890290409_0001_r_000000_0
15/09/15 17:15:09 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:15:09 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:15:09 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:15:09 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@78c0e5f9
15/09/15 17:15:09 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10
15/09/15 17:15:09 INFO reduce.EventFetcher: attempt_local1890290409_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
15/09/15 17:15:09 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local1890290409_0001_m_000000_0 decomp: 3974 len: 3978 to MEMORY
15/09/15 17:15:09 INFO reduce.InMemoryMapOutput: Read 3974 bytes from map-output for attempt_local1890290409_0001_m_000000_0
15/09/15 17:15:09 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 3974, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->3974
15/09/15 17:15:09 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning
15/09/15 17:15:09 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:15:09 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs
15/09/15 17:15:09 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:15:09 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 3949 bytes
15/09/15 17:15:09 INFO reduce.MergeManagerImpl: Merged 1 segments, 3974 bytes to disk to satisfy reduce memory limit
15/09/15 17:15:09 INFO reduce.MergeManagerImpl: Merging 1 files, 3978 bytes from disk
15/09/15 17:15:09 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
15/09/15 17:15:09 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:15:09 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 3949 bytes
15/09/15 17:15:09 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:15:09 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_2/./reducer.py]
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
15/09/15 17:15:09 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
15/09/15 17:15:09 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:15:09 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:15:09 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:15:09 INFO streaming.PipeMapRed: Records R/W=100/1
15/09/15 17:15:09 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:15:09 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:15:09 INFO mapred.Task: Task:attempt_local1890290409_0001_r_000000_0 is done. And is in the process of committing
15/09/15 17:15:09 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:15:09 INFO mapred.Task: Task attempt_local1890290409_0001_r_000000_0 is allowed to commit now
15/09/15 17:15:09 INFO output.FileOutputCommitter: Saved output of task 'attempt_local1890290409_0001_r_000000_0' to hdfs://localhost:9000/user/davidadams/hw2_2Output/_temporary/0/task_local1890290409_0001_r_000000
15/09/15 17:15:09 INFO mapred.LocalJobRunner: Records R/W=100/1 > reduce
15/09/15 17:15:09 INFO mapred.Task: Task 'attempt_local1890290409_0001_r_000000_0' done.
15/09/15 17:15:09 INFO mapred.LocalJobRunner: Finishing task: attempt_local1890290409_0001_r_000000_0
15/09/15 17:15:09 INFO mapred.LocalJobRunner: reduce task executor complete.
15/09/15 17:15:10 INFO mapreduce.Job: Job job_local1890290409_0001 running in uber mode : false
15/09/15 17:15:10 INFO mapreduce.Job:  map 100% reduce 100%
15/09/15 17:15:10 INFO mapreduce.Job: Job job_local1890290409_0001 completed successfully
15/09/15 17:15:10 INFO mapreduce.Job: Counters: 35
	File System Counters
		FILE: Number of bytes read=219812
		FILE: Number of bytes written=816682
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=407970
		HDFS: Number of bytes written=3
		HDFS: Number of read operations=13
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=4
	Map-Reduce Framework
		Map input records=100
		Map output records=100
		Map output bytes=3772
		Map output materialized bytes=3978
		Input split bytes=115
		Combine input records=0
		Combine output records=0
		Reduce input groups=100
		Reduce shuffle bytes=3978
		Reduce input records=100
		Reduce output records=1
		Spilled Records=200
		Shuffled Maps =1
		Failed Shuffles=0
		Merged Map outputs=1
		GC time elapsed (ms)=14
		Total committed heap usage (bytes)=608698368
	Shuffle Errors
		BAD_ID=0
		CONNECTION=0
		IO_ERROR=0
		WRONG_LENGTH=0
		WRONG_MAP=0
		WRONG_REDUCE=0
	File Input Format Counters 
		Bytes Read=203985
	File Output Format Counters 
		Bytes Written=3
15/09/15 17:15:10 INFO streaming.StreamJob: Output directory: hw2_2Output


There are 9	 emails that contain the word assistance

In [133]:
'''
    HW2.3. Using the Enron data from HW1 and Hadoop MapReduce, 
    write  a mapper/reducer pair that will classify the email messages 
    by a single, user-specified word. 
    Examine the word “assistance” and report your results. 
    
    - mapper.py
    - reducer.py performs a single word multinomial Naive Bayes classification.

'''

# make directory for problem and change to that dir
!mkdir ~/Documents/W261/hw2/hw2_3/
%cd ~/Documents/W261/hw2/hw2_3/
!cp ../enronemail_1h_cleaned.txt ./


mkdir: /Users/davidadams/Documents/W261/hw2/hw2_3/: File exists
/Users/davidadams/Documents/W261/hw2/hw2_3

In [134]:
%%writefile ./mapper.py
#!/usr/bin/python

import sys
import re
from collections import defaultdict

# regular expression for extracting word tokens from email content
WORD_RE = re.compile(r"[\w']+")

# Word to count passed in as command line argument
vocabwords = sys.argv[1].lower().split(' ')

# input as stdin
for line in sys.stdin:
    
    # email content is in last column of input file
    linelist = line.split('\t')
    content = linelist[-1]
    # extract words from content
    words = WORD_RE.findall(content.lower())
    
    # Initialize word counts
    vocabWordsCount = dict()
    for v in vocabwords:
        vocabWordsCount[v]=0
        
    # loop over words in email
    for w in words:
        if w in vocabWordsCount.keys():
            # if word is in vocab, increment count
            vocabWordsCount[w]+=1
    
    # output count of each vocab word in each email
    for k in vocabWordsCount.keys():
        print linelist[0]+'\t'+linelist[1]+'\t'+k+'\t'+str(vocabWordsCount[k])


Overwriting ./mapper.py

In [135]:
%%writefile ./reducer.py
#!/usr/bin/python

import sys
from collections import defaultdict
from math import log

# initialize counters
vocabWordCounts_spam = defaultdict(int)
vocabWordCounts_ham = defaultdict(int)
totalCount = 0
spamCount = 0
wordcounts = defaultdict(dict)

# initialize set of email ids in spam and ham
spam_ids = set()
ham_ids = set()

# Input from from mappers as stdin
for line in sys.stdin:
            
    line = line.strip()
    linelist = line.split('\t')
    
    # add count of word on line to dictionary by email ids
            #    {email_ids: {word1: count_of_word1, word2: count_of_word2,...}}
    wordcounts[linelist[0]][linelist[2]]=int(linelist[3])
            
    # class label for email is in second column
    spam = int(linelist[1])
            
    # add email id to correct set (spam or ham) and increment word counts
    if spam==1:
        spam_ids.add(linelist[0])
        vocabWordCounts_spam[linelist[2]]+=int(linelist[3])
    else:
        ham_ids.add(linelist[0])
        vocabWordCounts_ham[linelist[2]]+=int(linelist[3])

# number of emails in spam, ham, and total
spamCount = len(spam_ids)
hamCount = len(ham_ids)
totalCount = spamCount+hamCount

# prior probabilities of spam and ham calculated as (number of spam emails)/(total number of emails)
prior_spam = 1.0*spamCount/totalCount
prior_ham = 1.0-prior_spam

# sum number of words in vocab in spam and ham
total_all_vocab_in_spam = 0
total_all_vocab_in_ham = 0
for vw in vocabWordCounts_spam.keys():
    total_all_vocab_in_spam+=vocabWordCounts_spam[vw]
for vw in vocabWordCounts_ham.keys():
    total_all_vocab_in_ham+=vocabWordCounts_ham[vw]

# calc the total number of words in vocab as union of words in spam and ham
vocab_spam = set(vocabWordCounts_spam.keys())
vocab_ham = set(vocabWordCounts_ham.keys())
vocab = vocab_spam.union(vocab_ham)
vocab_size = len(vocab)

# initialize dicts for storing conditional probabilities for each vocab word in spam/ham
pr_vw_given_spam = dict()
pr_vw_given_ham = dict()

'''
Conditional Probabilities calculated as:
pr_vw_given_spam = (total_vw_in_spam+1)/(total_all_vocab_in_spam + vocab_size)
pr_vw_given_ham = (total_vw_in_ham+1)/(total_all_vocab_in_ham + vocab_size)
'''

# loop over all vocab words and store conditional probabilities
for vw in vocab:
    if vw in vocabWordCounts_spam.keys():
        pr_vw_given_spam[vw]=1.0*(vocabWordCounts_spam[vw]+1)/(total_all_vocab_in_spam + vocab_size)
    else:
        pr_vw_given_spam[vw]=1.0*(0+1)/(total_all_vocab_in_spam + vocab_size)
    if vw in vocabWordCounts_ham.keys():
        pr_vw_given_ham[vw]=1.0*(vocabWordCounts_ham[vw]+1)/(total_all_vocab_in_ham + vocab_size)
    else:
        pr_vw_given_ham[vw]=1.0*(0+1)/(total_all_vocab_in_ham + vocab_size)

# loop over emails to calculate spam/ham scores and make NB prediction
for email_id,email in wordcounts.iteritems():
    
    # initialize scores as priors
    spam_score = log(prior_spam)
    ham_score = log(prior_ham)

    # loop over vocab words in email and counts
    for w,c in email.iteritems():
        # add count*conditional probability for each vocab word in email
        spam_score+=c*log(pr_vw_given_spam[w])
        ham_score+=c*log(pr_vw_given_ham[w])

    # true class
    spam = 1*(email_id in spam_ids)
    
    # predicted class
    predict = 1*(spam_score>ham_score)
    
    # output results as 'ID \t truth \t prediction'
    print email_id+'\t'+str(spam)+'\t'+str(predict)


Overwriting ./reducer.py

In [139]:
# Run mapper and reducer cells first to write mapper.py and reducer.py

def hw2_3():
    
    def score(outputfile):
        '''
            Input: reducer Naive Bayes output file with format
                ID \t truth \t prediction
            Returns: Accuracy of classifier prediction
        '''
        # initialize count of examples and correct predictions
        n = 0
        correct=0
    
        # read lines from reducer output file
        with open (outputfile, "r") as outfile:
            for line in outfile.readlines():
                # increment count of number of examples
                n+=1
            
                # split line
                lineList = line.replace('\n','').split('\t')
            
                # true class is in second column
                truth=int(lineList[1])
            
                # predicted class is in third column
                predict=int(lineList[2])
            
                # increment number of correct examples if prediction matches truth
                correct+=(1*truth==predict)
    
        # return percent of correct predictions (accuracy)
        return 1.0*correct/n
    

    
    # change to problem dir and copy data into dir
    %cd ~/Documents/W261/hw2/hw2_3/
    !cp ../enronemail_1h_cleaned.txt ./
    
    # put data file into HDFS
    !hdfs dfs -rm enronemail_1h_cleaned.txt
    !hdfs dfs -put enronemail_1h_cleaned.txt /user/davidadams
    
    # run Hadoop streaming mapreduce with mapper.py and reducer.py
    !hdfs dfs -rm -r hw2_3Output
    !hadoop jar ~/Documents/W261/hw2/hadoop-*streaming*.jar -mapper "mapper.py 'assistance'" -reducer reducer.py -input enronemail_1h_cleaned.txt -output hw2_3Output
    
    # show output file
    print '\n================================================='
    !hdfs dfs -cat hw2_3Output/part-00000
    
    # calculate and show accuracy
    !hdfs dfs -cat hw2_3Output/part-00000 > 'output.txt'
    outputfile = 'output.txt'
    accuracy = score(outputfile)
    print '\n================================================='
    print '\nAccuracy: ',accuracy
    

hw2_3()


/Users/davidadams/Documents/W261/hw2/hw2_3
15/09/15 17:26:05 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:26:06 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted enronemail_1h_cleaned.txt
15/09/15 17:26:07 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:26:10 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:26:10 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted hw2_3Output
15/09/15 17:26:12 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:26:13 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
15/09/15 17:26:13 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
15/09/15 17:26:13 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
15/09/15 17:26:13 INFO mapred.FileInputFormat: Total input paths to process : 1
15/09/15 17:26:13 INFO mapreduce.JobSubmitter: number of splits:1
15/09/15 17:26:13 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1386695135_0001
15/09/15 17:26:13 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
15/09/15 17:26:13 INFO mapred.LocalJobRunner: OutputCommitter set in config null
15/09/15 17:26:13 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter
15/09/15 17:26:13 INFO mapreduce.Job: Running job: job_local1386695135_0001
15/09/15 17:26:13 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:26:13 INFO mapred.LocalJobRunner: Waiting for map tasks
15/09/15 17:26:13 INFO mapred.LocalJobRunner: Starting task: attempt_local1386695135_0001_m_000000_0
15/09/15 17:26:13 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:26:13 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:26:13 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:26:13 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/davidadams/enronemail_1h_cleaned.txt:0+203985
15/09/15 17:26:13 INFO mapred.MapTask: numReduceTasks: 1
15/09/15 17:26:13 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)
15/09/15 17:26:13 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100
15/09/15 17:26:13 INFO mapred.MapTask: soft limit at 83886080
15/09/15 17:26:13 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
15/09/15 17:26:13 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
15/09/15 17:26:13 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
15/09/15 17:26:14 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_3/./mapper.py, assistance]
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
15/09/15 17:26:14 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
15/09/15 17:26:14 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition
15/09/15 17:26:14 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir
15/09/15 17:26:14 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id
15/09/15 17:26:14 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:26:14 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:26:14 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:26:14 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:26:14 INFO streaming.PipeMapRed: Records R/W=100/1
15/09/15 17:26:14 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:26:14 INFO mapred.LocalJobRunner: 
15/09/15 17:26:14 INFO mapred.MapTask: Starting flush of map output
15/09/15 17:26:14 INFO mapred.MapTask: Spilling map output
15/09/15 17:26:14 INFO mapred.MapTask: bufstart = 0; bufend = 3772; bufvoid = 104857600
15/09/15 17:26:14 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26214000(104856000); length = 397/6553600
15/09/15 17:26:14 INFO mapred.MapTask: Finished spill 0
15/09/15 17:26:14 INFO mapred.Task: Task:attempt_local1386695135_0001_m_000000_0 is done. And is in the process of committing
15/09/15 17:26:14 INFO mapred.LocalJobRunner: Records R/W=100/1
15/09/15 17:26:14 INFO mapred.Task: Task 'attempt_local1386695135_0001_m_000000_0' done.
15/09/15 17:26:14 INFO mapred.LocalJobRunner: Finishing task: attempt_local1386695135_0001_m_000000_0
15/09/15 17:26:14 INFO mapred.LocalJobRunner: map task executor complete.
15/09/15 17:26:14 INFO mapred.LocalJobRunner: Waiting for reduce tasks
15/09/15 17:26:14 INFO mapred.LocalJobRunner: Starting task: attempt_local1386695135_0001_r_000000_0
15/09/15 17:26:14 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:26:14 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:26:14 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:26:14 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@6a7ffd16
15/09/15 17:26:14 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10
15/09/15 17:26:14 INFO reduce.EventFetcher: attempt_local1386695135_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
15/09/15 17:26:14 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local1386695135_0001_m_000000_0 decomp: 3974 len: 3978 to MEMORY
15/09/15 17:26:14 INFO reduce.InMemoryMapOutput: Read 3974 bytes from map-output for attempt_local1386695135_0001_m_000000_0
15/09/15 17:26:14 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 3974, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->3974
15/09/15 17:26:14 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning
15/09/15 17:26:14 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:26:14 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs
15/09/15 17:26:14 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:26:14 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 3949 bytes
15/09/15 17:26:14 INFO reduce.MergeManagerImpl: Merged 1 segments, 3974 bytes to disk to satisfy reduce memory limit
15/09/15 17:26:14 INFO reduce.MergeManagerImpl: Merging 1 files, 3978 bytes from disk
15/09/15 17:26:14 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
15/09/15 17:26:14 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:26:14 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 3949 bytes
15/09/15 17:26:14 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:26:14 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_3/./reducer.py]
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
15/09/15 17:26:14 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
15/09/15 17:26:14 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:26:14 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:26:14 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:26:14 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:26:14 INFO streaming.PipeMapRed: Records R/W=100/1
15/09/15 17:26:14 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:26:14 INFO mapred.Task: Task:attempt_local1386695135_0001_r_000000_0 is done. And is in the process of committing
15/09/15 17:26:14 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:26:14 INFO mapred.Task: Task attempt_local1386695135_0001_r_000000_0 is allowed to commit now
15/09/15 17:26:14 INFO output.FileOutputCommitter: Saved output of task 'attempt_local1386695135_0001_r_000000_0' to hdfs://localhost:9000/user/davidadams/hw2_3Output/_temporary/0/task_local1386695135_0001_r_000000
15/09/15 17:26:14 INFO mapred.LocalJobRunner: Records R/W=100/1 > reduce
15/09/15 17:26:14 INFO mapred.Task: Task 'attempt_local1386695135_0001_r_000000_0' done.
15/09/15 17:26:14 INFO mapred.LocalJobRunner: Finishing task: attempt_local1386695135_0001_r_000000_0
15/09/15 17:26:14 INFO mapred.LocalJobRunner: reduce task executor complete.
15/09/15 17:26:14 INFO mapreduce.Job: Job job_local1386695135_0001 running in uber mode : false
15/09/15 17:26:14 INFO mapreduce.Job:  map 100% reduce 100%
15/09/15 17:26:14 INFO mapreduce.Job: Job job_local1386695135_0001 completed successfully
15/09/15 17:26:14 INFO mapreduce.Job: Counters: 35
	File System Counters
		FILE: Number of bytes read=219812
		FILE: Number of bytes written=816682
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=407970
		HDFS: Number of bytes written=2672
		HDFS: Number of read operations=13
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=4
	Map-Reduce Framework
		Map input records=100
		Map output records=100
		Map output bytes=3772
		Map output materialized bytes=3978
		Input split bytes=115
		Combine input records=0
		Combine output records=0
		Reduce input groups=100
		Reduce shuffle bytes=3978
		Reduce input records=100
		Reduce output records=100
		Spilled Records=200
		Shuffled Maps =1
		Failed Shuffles=0
		Merged Map outputs=1
		GC time elapsed (ms)=12
		Total committed heap usage (bytes)=608698368
	Shuffle Errors
		BAD_ID=0
		CONNECTION=0
		IO_ERROR=0
		WRONG_LENGTH=0
		WRONG_MAP=0
		WRONG_REDUCE=0
	File Input Format Counters 
		Bytes Read=203985
	File Output Format Counters 
		Bytes Written=2672
15/09/15 17:26:14 INFO streaming.StreamJob: Output directory: hw2_3Output

=================================================
15/09/15 17:26:16 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
0010.2003-12-18.GP	1	0
0010.2001-06-28.SA_and_HP	1	0
0001.2000-01-17.beck	0	0
0018.1999-12-14.kaminski	0	0
0005.1999-12-12.kaminski	0	0
0011.2001-06-29.SA_and_HP	1	0
0008.2004-08-01.BG	1	0
0009.1999-12-14.farmer	0	0
0017.2003-12-18.GP	1	0
0011.2001-06-28.SA_and_HP	1	0
0015.2001-07-05.SA_and_HP	1	0
0015.2001-02-12.kitchen	0	0
0009.2001-06-26.SA_and_HP	1	0
0017.1999-12-14.kaminski	0	0
0012.2000-01-17.beck	0	0
0003.2000-01-17.beck	0	0
0004.2001-06-12.SA_and_HP	1	0
0008.2001-06-12.SA_and_HP	1	0
0007.2001-02-09.kitchen	0	0
0016.2004-08-01.BG	1	0
0015.2000-06-09.lokay	0	0
0005.1999-12-14.farmer	0	0
0016.1999-12-15.farmer	0	0
0013.2004-08-01.BG	1	0
0005.2003-12-18.GP	1	0
0012.2001-02-09.kitchen	0	0
0003.2001-02-08.kitchen	0	0
0009.2001-02-09.kitchen	0	0
0006.2001-02-08.kitchen	0	0
0014.2003-12-19.GP	1	0
0010.1999-12-14.farmer	0	0
0010.2004-08-01.BG	1	0
0014.1999-12-14.kaminski	0	0
0006.1999-12-13.kaminski	0	0
0011.1999-12-14.farmer	0	0
0013.1999-12-14.kaminski	0	0
0001.2001-02-07.kitchen	0	0
0008.2001-02-09.kitchen	0	0
0007.2003-12-18.GP	1	0
0017.2004-08-02.BG	1	0
0014.2004-08-01.BG	1	0
0006.2003-12-18.GP	1	0
0016.2001-07-05.SA_and_HP	1	0
0008.2003-12-18.GP	1	0
0014.2001-07-04.SA_and_HP	1	0
0001.2001-04-02.williams	0	0
0012.2000-06-08.lokay	0	0
0014.1999-12-15.farmer	0	0
0009.2000-06-07.lokay	0	0
0001.1999-12-10.farmer	0	0
0008.2001-06-25.SA_and_HP	1	0
0017.2001-04-03.williams	0	0
0014.2001-02-12.kitchen	0	0
0016.2001-07-06.SA_and_HP	1	0
0015.1999-12-15.farmer	0	0
0009.1999-12-13.kaminski	0	0
0001.2000-06-06.lokay	0	0
0011.2004-08-01.BG	1	0
0004.2004-08-01.BG	1	0
0018.2003-12-18.GP	1	0
0002.1999-12-13.farmer	0	0
0016.2003-12-19.GP	1	0
0004.1999-12-14.farmer	0	0
0015.2003-12-19.GP	1	0
0006.2004-08-01.BG	1	0
0009.2003-12-18.GP	1	0
0007.1999-12-14.farmer	0	0
0005.2000-06-06.lokay	0	0
0010.1999-12-14.kaminski	0	0
0007.2000-01-17.beck	0	0
0003.1999-12-14.farmer	0	0
0003.2004-08-01.BG	1	0
0017.2004-08-01.BG	1	0
0013.2001-06-30.SA_and_HP	1	0
0003.1999-12-10.kaminski	0	0
0012.1999-12-14.farmer	0	0
0004.1999-12-10.kaminski	0	0
0018.2001-07-13.SA_and_HP	1	0
0002.2001-02-07.kitchen	0	0
0007.2004-08-01.BG	1	0
0012.1999-12-14.kaminski	0	0
0005.2001-06-23.SA_and_HP	1	0
0007.1999-12-13.kaminski	0	0
0017.2000-01-17.beck	0	0
0006.2001-06-25.SA_and_HP	1	0
0006.2001-04-03.williams	0	0
0005.2001-02-08.kitchen	0	0
0002.2003-12-18.GP	1	0
0003.2003-12-18.GP	1	0
0013.2001-04-03.williams	0	0
0004.2001-04-02.williams	0	0
0010.2001-02-09.kitchen	0	0
0001.1999-12-10.kaminski	0	0
0013.1999-12-14.farmer	0	0
0015.1999-12-14.kaminski	0	0
0012.2003-12-19.GP	1	0
0016.2001-02-12.kitchen	0	0
0002.2004-08-01.BG	1	0
0002.2001-05-25.SA_and_HP	1	0
0011.2003-12-18.GP	1	0
15/09/15 17:26:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

=================================================

Accuracy:  0.56

In [93]:
'''
    HW2.4. Using the Enron data from HW1 and in the Hadoop MapReduce 
    framework, write  a mapper/reducer pair that will classify 
    the email messages using multinomial Naive Bayes Classifier 
    using a list of one or more user-specified words. 
    Examine the words “assistance”, “valium”, and “enlargementWithATypo” 
    and report your results

    - mapper.py 
    - reducer.py performs the multiple-word multinomial Naive Bayes 
                    classification via the chosen list.
'''

# make directory for problem and change to that dir
!mkdir ~/Documents/W261/hw2/hw2_4/
%cd ~/Documents/W261/hw2/hw2_4/
!cp ../enronemail_1h_cleaned.txt ./


/Users/davidadams/Documents/W261/hw2/hw2_4

In [140]:
%%writefile ./mapper.py
#!/usr/bin/python

import sys
import re

# regular expression for extracting word tokens from email content
WORD_RE = re.compile(r"[\w']+")

# Word to count passed in as command line argument
vocabwords = sys.argv[1].lower().split(' ')

# input as stdin
for line in sys.stdin:
    
    # email content is in last column of input file
    linelist = line.split('\t')
    content = linelist[-1]
    # extract words from content
    words = WORD_RE.findall(content.lower())
    
    # Initialize word counts
    vocabWordsCount = dict()
    for v in vocabwords:
        vocabWordsCount[v]=0
        
    # loop over words in email
    for w in words:
        if w in vocabWordsCount.keys():
            # if word is in vocab, increment count
            vocabWordsCount[w]+=1
    
    # output count of each vocab word in each email
    for k in vocabWordsCount.keys():
        print linelist[0]+'\t'+linelist[1]+'\t'+k+'\t'+str(vocabWordsCount[k])


Overwriting ./mapper.py

In [141]:
%%writefile ./reducer.py
#!/usr/bin/python

import sys
from collections import defaultdict
from math import log

# initialize counters
vocabWordCounts_spam = defaultdict(int)
vocabWordCounts_ham = defaultdict(int)
totalCount = 0
spamCount = 0
wordcounts = defaultdict(dict)

# initialize set of email ids in spam and ham
spam_ids = set()
ham_ids = set()

# Input from from mappers as stdin
for line in sys.stdin:
            
    line = line.strip()
    linelist = line.split('\t')
    
    # add count of word on line to dictionary by email ids
            #    {email_ids: {word1: count_of_word1, word2: count_of_word2,...}}
    wordcounts[linelist[0]][linelist[2]]=int(linelist[3])
            
    # class label for email is in second column
    spam = int(linelist[1])
            
    # add email id to correct set (spam or ham) and increment word counts
    if spam==1:
        spam_ids.add(linelist[0])
        vocabWordCounts_spam[linelist[2]]+=int(linelist[3])
    else:
        ham_ids.add(linelist[0])
        vocabWordCounts_ham[linelist[2]]+=int(linelist[3])

# number of emails in spam, ham, and total
spamCount = len(spam_ids)
hamCount = len(ham_ids)
totalCount = spamCount+hamCount

# prior probabilities of spam and ham calculated as (number of spam emails)/(total number of emails)
prior_spam = 1.0*spamCount/totalCount
prior_ham = 1.0-prior_spam

# sum number of words in vocab in spam and ham
total_all_vocab_in_spam = 0
total_all_vocab_in_ham = 0
for vw in vocabWordCounts_spam.keys():
    total_all_vocab_in_spam+=vocabWordCounts_spam[vw]
for vw in vocabWordCounts_ham.keys():
    total_all_vocab_in_ham+=vocabWordCounts_ham[vw]

# calc the total number of words in vocab as union of words in spam and ham
vocab_spam = set(vocabWordCounts_spam.keys())
vocab_ham = set(vocabWordCounts_ham.keys())
vocab = vocab_spam.union(vocab_ham)
vocab_size = len(vocab)

# initialize dicts for storing conditional probabilities for each vocab word in spam/ham
pr_vw_given_spam = dict()
pr_vw_given_ham = dict()

'''
Conditional Probabilities calculated as:
pr_vw_given_spam = (total_vw_in_spam+1)/(total_all_vocab_in_spam + vocab_size)
pr_vw_given_ham = (total_vw_in_ham+1)/(total_all_vocab_in_ham + vocab_size)
'''

# loop over all vocab words and store conditional probabilities
for vw in vocab:
    if vw in vocabWordCounts_spam.keys():
        pr_vw_given_spam[vw]=1.0*(vocabWordCounts_spam[vw]+1)/(total_all_vocab_in_spam + vocab_size)
    else:
        pr_vw_given_spam[vw]=1.0*(0+1)/(total_all_vocab_in_spam + vocab_size)
    if vw in vocabWordCounts_ham.keys():
        pr_vw_given_ham[vw]=1.0*(vocabWordCounts_ham[vw]+1)/(total_all_vocab_in_ham + vocab_size)
    else:
        pr_vw_given_ham[vw]=1.0*(0+1)/(total_all_vocab_in_ham + vocab_size)

# loop over emails to calculate spam/ham scores and make NB prediction
for email_id,email in wordcounts.iteritems():
    
    # initialize scores as priors
    spam_score = log(prior_spam)
    ham_score = log(prior_ham)

    # loop over vocab words in email and counts
    for w,c in email.iteritems():
        # add count*conditional probability for each vocab word in email
        spam_score+=c*log(pr_vw_given_spam[w])
        ham_score+=c*log(pr_vw_given_ham[w])

    # true class
    spam = 1*(email_id in spam_ids)
    
    # predicted class
    predict = 1*(spam_score>ham_score)
    
    # output results as 'ID \t truth \t prediction'
    print email_id+'\t'+str(spam)+'\t'+str(predict)


Overwriting ./reducer.py

In [143]:
# Run mapper and reducer cells first to write mapper.py and reducer.py

def hw2_4():
    
    def score(outputfile):
        '''
            Input: reducer Naive Bayes output file with format
                ID \t truth \t prediction
            Returns: Accuracy of classifier prediction
        '''
        # initialize count of examples and correct predictions
        n = 0
        correct=0
    
        # read lines from reducer output file
        with open (outputfile, "r") as outfile:
            for line in outfile.readlines():
                # increment count of number of examples
                n+=1
            
                # split line
                lineList = line.replace('\n','').split('\t')
            
                # true class is in second column
                truth=int(lineList[1])
            
                # predicted class is in third column
                predict=int(lineList[2])
            
                # increment number of correct examples if prediction matches truth
                correct+=(1*truth==predict)
    
        # return percent of correct predictions (accuracy)
        return 1.0*correct/n
    
    # change to problem dir and copy data into dir
    %cd ~/Documents/W261/hw2/hw2_4/
    !cp ../enronemail_1h_cleaned.txt ./

    # put data file into HDFS
    !hdfs dfs -rm enronemail_1h_cleaned.txt
    !hdfs dfs -put enronemail_1h_cleaned.txt /user/davidadams
    
    # run Hadoop streaming mapreduce with mapper.py and reducer.py
    !hdfs dfs -rm -r hw2_4Output
    !hadoop jar ~/Documents/W261/hw2/hadoop-*streaming*.jar -mapper "mapper.py 'assistance valium enlargementWithATypo'" -reducer reducer.py -input enronemail_1h_cleaned.txt -output hw2_4Output
    
    # show output file
    print '\n================================================='
    !hdfs dfs -cat hw2_3Output/part-00000
    
    # calculate and show accuracy
    !hdfs dfs -cat hw2_4Output/part-00000 > 'output.txt'
    outputfile = 'output.txt'
    accuracy = score(outputfile)
    print '\n================================================='
    print 'Accuracy: ',accuracy
    
hw2_4()


/Users/davidadams/Documents/W261/hw2/hw2_4
15/09/15 17:32:50 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:32:50 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted enronemail_1h_cleaned.txt
15/09/15 17:32:52 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:32:54 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:32:55 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted hw2_4Output
15/09/15 17:32:56 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:32:57 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
15/09/15 17:32:57 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
15/09/15 17:32:57 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
15/09/15 17:32:57 INFO mapred.FileInputFormat: Total input paths to process : 1
15/09/15 17:32:57 INFO mapreduce.JobSubmitter: number of splits:1
15/09/15 17:32:57 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1602445766_0001
15/09/15 17:32:57 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
15/09/15 17:32:57 INFO mapred.LocalJobRunner: OutputCommitter set in config null
15/09/15 17:32:57 INFO mapreduce.Job: Running job: job_local1602445766_0001
15/09/15 17:32:57 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter
15/09/15 17:32:57 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:32:57 INFO mapred.LocalJobRunner: Waiting for map tasks
15/09/15 17:32:57 INFO mapred.LocalJobRunner: Starting task: attempt_local1602445766_0001_m_000000_0
15/09/15 17:32:57 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:32:57 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:32:57 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:32:57 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/davidadams/enronemail_1h_cleaned.txt:0+203985
15/09/15 17:32:57 INFO mapred.MapTask: numReduceTasks: 1
15/09/15 17:32:58 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)
15/09/15 17:32:58 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100
15/09/15 17:32:58 INFO mapred.MapTask: soft limit at 83886080
15/09/15 17:32:58 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
15/09/15 17:32:58 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
15/09/15 17:32:58 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
15/09/15 17:32:58 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_4/./mapper.py, assistance valium enlargementWithATypo]
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
15/09/15 17:32:58 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
15/09/15 17:32:58 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition
15/09/15 17:32:58 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir
15/09/15 17:32:58 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id
15/09/15 17:32:58 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:32:58 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:32:58 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:32:58 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:32:58 INFO streaming.PipeMapRed: Records R/W=100/1
15/09/15 17:32:58 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:32:58 INFO mapred.LocalJobRunner: 
15/09/15 17:32:58 INFO mapred.MapTask: Starting flush of map output
15/09/15 17:32:58 INFO mapred.MapTask: Spilling map output
15/09/15 17:32:58 INFO mapred.MapTask: bufstart = 0; bufend = 11916; bufvoid = 104857600
15/09/15 17:32:58 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26213200(104852800); length = 1197/6553600
15/09/15 17:32:58 INFO mapred.MapTask: Finished spill 0
15/09/15 17:32:58 INFO mapred.Task: Task:attempt_local1602445766_0001_m_000000_0 is done. And is in the process of committing
15/09/15 17:32:58 INFO mapred.LocalJobRunner: Records R/W=100/1
15/09/15 17:32:58 INFO mapred.Task: Task 'attempt_local1602445766_0001_m_000000_0' done.
15/09/15 17:32:58 INFO mapred.LocalJobRunner: Finishing task: attempt_local1602445766_0001_m_000000_0
15/09/15 17:32:58 INFO mapred.LocalJobRunner: map task executor complete.
15/09/15 17:32:58 INFO mapred.LocalJobRunner: Waiting for reduce tasks
15/09/15 17:32:58 INFO mapred.LocalJobRunner: Starting task: attempt_local1602445766_0001_r_000000_0
15/09/15 17:32:58 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:32:58 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:32:58 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:32:58 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@4816ec79
15/09/15 17:32:58 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10
15/09/15 17:32:58 INFO reduce.EventFetcher: attempt_local1602445766_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
15/09/15 17:32:58 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local1602445766_0001_m_000000_0 decomp: 12518 len: 12522 to MEMORY
15/09/15 17:32:58 INFO reduce.InMemoryMapOutput: Read 12518 bytes from map-output for attempt_local1602445766_0001_m_000000_0
15/09/15 17:32:58 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 12518, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->12518
15/09/15 17:32:58 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning
15/09/15 17:32:58 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:32:58 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs
15/09/15 17:32:58 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:32:58 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 12493 bytes
15/09/15 17:32:58 INFO reduce.MergeManagerImpl: Merged 1 segments, 12518 bytes to disk to satisfy reduce memory limit
15/09/15 17:32:58 INFO reduce.MergeManagerImpl: Merging 1 files, 12522 bytes from disk
15/09/15 17:32:58 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
15/09/15 17:32:58 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:32:58 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 12493 bytes
15/09/15 17:32:58 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:32:58 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_4/./reducer.py]
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
15/09/15 17:32:58 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
15/09/15 17:32:58 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:32:58 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:32:58 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:32:58 INFO streaming.PipeMapRed: Records R/W=300/1
15/09/15 17:32:58 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:32:58 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:32:58 INFO mapred.Task: Task:attempt_local1602445766_0001_r_000000_0 is done. And is in the process of committing
15/09/15 17:32:58 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:32:58 INFO mapred.Task: Task attempt_local1602445766_0001_r_000000_0 is allowed to commit now
15/09/15 17:32:58 INFO output.FileOutputCommitter: Saved output of task 'attempt_local1602445766_0001_r_000000_0' to hdfs://localhost:9000/user/davidadams/hw2_4Output/_temporary/0/task_local1602445766_0001_r_000000
15/09/15 17:32:58 INFO mapred.LocalJobRunner: Records R/W=300/1 > reduce
15/09/15 17:32:58 INFO mapred.Task: Task 'attempt_local1602445766_0001_r_000000_0' done.
15/09/15 17:32:58 INFO mapred.LocalJobRunner: Finishing task: attempt_local1602445766_0001_r_000000_0
15/09/15 17:32:58 INFO mapred.LocalJobRunner: reduce task executor complete.
15/09/15 17:32:58 INFO mapreduce.Job: Job job_local1602445766_0001 running in uber mode : false
15/09/15 17:32:58 INFO mapreduce.Job:  map 100% reduce 100%
15/09/15 17:32:58 INFO mapreduce.Job: Job job_local1602445766_0001 completed successfully
15/09/15 17:32:58 INFO mapreduce.Job: Counters: 35
	File System Counters
		FILE: Number of bytes read=236900
		FILE: Number of bytes written=842426
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=407970
		HDFS: Number of bytes written=2672
		HDFS: Number of read operations=13
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=4
	Map-Reduce Framework
		Map input records=100
		Map output records=300
		Map output bytes=11916
		Map output materialized bytes=12522
		Input split bytes=115
		Combine input records=0
		Combine output records=0
		Reduce input groups=100
		Reduce shuffle bytes=12522
		Reduce input records=300
		Reduce output records=100
		Spilled Records=600
		Shuffled Maps =1
		Failed Shuffles=0
		Merged Map outputs=1
		GC time elapsed (ms)=16
		Total committed heap usage (bytes)=608698368
	Shuffle Errors
		BAD_ID=0
		CONNECTION=0
		IO_ERROR=0
		WRONG_LENGTH=0
		WRONG_MAP=0
		WRONG_REDUCE=0
	File Input Format Counters 
		Bytes Read=203985
	File Output Format Counters 
		Bytes Written=2672
15/09/15 17:32:58 INFO streaming.StreamJob: Output directory: hw2_4Output

=================================================
15/09/15 17:33:00 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
0010.2003-12-18.GP	1	0
0010.2001-06-28.SA_and_HP	1	0
0001.2000-01-17.beck	0	0
0018.1999-12-14.kaminski	0	0
0005.1999-12-12.kaminski	0	0
0011.2001-06-29.SA_and_HP	1	0
0008.2004-08-01.BG	1	0
0009.1999-12-14.farmer	0	0
0017.2003-12-18.GP	1	0
0011.2001-06-28.SA_and_HP	1	0
0015.2001-07-05.SA_and_HP	1	0
0015.2001-02-12.kitchen	0	0
0009.2001-06-26.SA_and_HP	1	0
0017.1999-12-14.kaminski	0	0
0012.2000-01-17.beck	0	0
0003.2000-01-17.beck	0	0
0004.2001-06-12.SA_and_HP	1	0
0008.2001-06-12.SA_and_HP	1	0
0007.2001-02-09.kitchen	0	0
0016.2004-08-01.BG	1	0
0015.2000-06-09.lokay	0	0
0005.1999-12-14.farmer	0	0
0016.1999-12-15.farmer	0	0
0013.2004-08-01.BG	1	0
0005.2003-12-18.GP	1	0
0012.2001-02-09.kitchen	0	0
0003.2001-02-08.kitchen	0	0
0009.2001-02-09.kitchen	0	0
0006.2001-02-08.kitchen	0	0
0014.2003-12-19.GP	1	0
0010.1999-12-14.farmer	0	0
0010.2004-08-01.BG	1	0
0014.1999-12-14.kaminski	0	0
0006.1999-12-13.kaminski	0	0
0011.1999-12-14.farmer	0	0
0013.1999-12-14.kaminski	0	0
0001.2001-02-07.kitchen	0	0
0008.2001-02-09.kitchen	0	0
0007.2003-12-18.GP	1	0
0017.2004-08-02.BG	1	0
0014.2004-08-01.BG	1	0
0006.2003-12-18.GP	1	0
0016.2001-07-05.SA_and_HP	1	0
0008.2003-12-18.GP	1	0
0014.2001-07-04.SA_and_HP	1	0
0001.2001-04-02.williams	0	0
0012.2000-06-08.lokay	0	0
0014.1999-12-15.farmer	0	0
0009.2000-06-07.lokay	0	0
0001.1999-12-10.farmer	0	0
0008.2001-06-25.SA_and_HP	1	0
0017.2001-04-03.williams	0	0
0014.2001-02-12.kitchen	0	0
0016.2001-07-06.SA_and_HP	1	0
0015.1999-12-15.farmer	0	0
0009.1999-12-13.kaminski	0	0
0001.2000-06-06.lokay	0	0
0011.2004-08-01.BG	1	0
0004.2004-08-01.BG	1	0
0018.2003-12-18.GP	1	0
0002.1999-12-13.farmer	0	0
0016.2003-12-19.GP	1	0
0004.1999-12-14.farmer	0	0
0015.2003-12-19.GP	1	0
0006.2004-08-01.BG	1	0
0009.2003-12-18.GP	1	0
0007.1999-12-14.farmer	0	0
0005.2000-06-06.lokay	0	0
0010.1999-12-14.kaminski	0	0
0007.2000-01-17.beck	0	0
0003.1999-12-14.farmer	0	0
0003.2004-08-01.BG	1	0
0017.2004-08-01.BG	1	0
0013.2001-06-30.SA_and_HP	1	0
0003.1999-12-10.kaminski	0	0
0012.1999-12-14.farmer	0	0
0004.1999-12-10.kaminski	0	0
0018.2001-07-13.SA_and_HP	1	0
0002.2001-02-07.kitchen	0	0
0007.2004-08-01.BG	1	0
0012.1999-12-14.kaminski	0	0
0005.2001-06-23.SA_and_HP	1	0
0007.1999-12-13.kaminski	0	0
0017.2000-01-17.beck	0	0
0006.2001-06-25.SA_and_HP	1	0
0006.2001-04-03.williams	0	0
0005.2001-02-08.kitchen	0	0
0002.2003-12-18.GP	1	0
0003.2003-12-18.GP	1	0
0013.2001-04-03.williams	0	0
0004.2001-04-02.williams	0	0
0010.2001-02-09.kitchen	0	0
0001.1999-12-10.kaminski	0	0
0013.1999-12-14.farmer	0	0
0015.1999-12-14.kaminski	0	0
0012.2003-12-19.GP	1	0
0016.2001-02-12.kitchen	0	0
0002.2004-08-01.BG	1	0
0002.2001-05-25.SA_and_HP	1	0
0011.2003-12-18.GP	1	0
15/09/15 17:33:02 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

=================================================
Accuracy:  0.56

In [144]:
'''
    HW2.5. Using the Enron data from HW1 an in the Hadoop MapReduce 
    framework, write  a mapper/reducer for a multinomial Naive Bayes 
    Classifier that will classify the email messages using words present. 
    Also drop words with a frequency of less than three (3). 
    How does it affect the misclassifcation error of learnt 
    naive multinomial Bayesian Classifiers on the training dataset:

'''

# make directory for problem and change to that dir
!mkdir ~/Documents/W261/hw2/hw2_5/
%cd ~/Documents/W261/hw2/hw2_5/
!cp ../enronemail_1h_cleaned.txt ./


mkdir: /Users/davidadams/Documents/W261/hw2/hw2_5/: File exists
/Users/davidadams/Documents/W261/hw2/hw2_5

In [145]:
%%writefile ./mapper.py
#!/usr/bin/python

import sys
import re
from collections import defaultdict

# regular expression for extracting word tokens from email content
WORD_RE = re.compile(r"[\w']+")

# Word to count passed in as command line argument
vocabwords = sys.argv[1].lower().split(' ')

# input as stdin
for line in sys.stdin:
    
    # email content is in last column of input file
    linelist = line.split('\t')
    content = linelist[-1]
    # extract word tokens from content
    words = WORD_RE.findall(content.lower())
    
    # Initialize word counts
    vocabWordsCount = defaultdict(int)
    
    # loop over words in email and increment counts
    for w in words:
        vocabWordsCount[w]+=1
    
    # output count of each vocab word in each email
    for k in vocabWordsCount.keys():
        print linelist[0]+'\t'+linelist[1]+'\t'+k+'\t'+str(vocabWordsCount[k])


Overwriting ./mapper.py

In [146]:
%%writefile ./reducer.py
#!/usr/bin/python

import sys
from collections import defaultdict
from math import log

# initialize counters
vocabWordCounts_spam = defaultdict(int)
vocabWordCounts_ham = defaultdict(int)
totalCount = 0
spamCount = 0
wordcounts = defaultdict(dict)

# initialize set of email ids in spam and ham
spam_ids = set()
ham_ids = set()

# Input from from mappers as stdin
for line in sys.stdin:
            
    line = line.strip()
    linelist = line.split('\t')
    
    # add count of word on line to dictionary by email ids
            #    {email_ids: {word1: count_of_word1, word2: count_of_word2,...}}
    wordcounts[linelist[0]][linelist[2]]=int(linelist[3])
            
    # class label for email is in second column
    spam = int(linelist[1])
            
    # add email id to correct set (spam or ham) and increment word counts
    if spam==1:
        spam_ids.add(linelist[0])
        vocabWordCounts_spam[linelist[2]]+=int(linelist[3])
    else:
        ham_ids.add(linelist[0])
        vocabWordCounts_ham[linelist[2]]+=int(linelist[3])

# number of emails in spam, ham, and total
spamCount = len(spam_ids)
hamCount = len(ham_ids)
totalCount = spamCount+hamCount

# prior probabilities of spam and ham calculated as (number of spam emails)/(total number of emails)
prior_spam = 1.0*spamCount/totalCount
prior_ham = 1.0-prior_spam

# sum number of words in vocab in spam and ham
total_all_vocab_in_spam = 0
total_all_vocab_in_ham = 0
for vw in vocabWordCounts_spam.keys():
    total_all_vocab_in_spam+=vocabWordCounts_spam[vw]
for vw in vocabWordCounts_ham.keys():
    total_all_vocab_in_ham+=vocabWordCounts_ham[vw]

# calc the total number of words in vocab as union of words in spam and ham
vocab_spam = set(vocabWordCounts_spam.keys())
vocab_ham = set(vocabWordCounts_ham.keys())
vocab = vocab_spam.union(vocab_ham)
vocab_size = len(vocab)

# initialize dicts for storing conditional probabilities for each vocab word in spam/ham
pr_vw_given_spam = dict()
pr_vw_given_ham = dict()

'''
Conditional Probabilities calculated as:
pr_vw_given_spam = (total_vw_in_spam+1)/(total_all_vocab_in_spam + vocab_size)
pr_vw_given_ham = (total_vw_in_ham+1)/(total_all_vocab_in_ham + vocab_size)
'''

# loop over all vocab words and store conditional probabilities
for vw in vocab:
    if vw in vocabWordCounts_spam.keys():
        pr_vw_given_spam[vw]=1.0*(vocabWordCounts_spam[vw]+1)/(total_all_vocab_in_spam + vocab_size)
    else:
        pr_vw_given_spam[vw]=1.0*(0+1)/(total_all_vocab_in_spam + vocab_size)
    if vw in vocabWordCounts_ham.keys():
        pr_vw_given_ham[vw]=1.0*(vocabWordCounts_ham[vw]+1)/(total_all_vocab_in_ham + vocab_size)
    else:
        pr_vw_given_ham[vw]=1.0*(0+1)/(total_all_vocab_in_ham + vocab_size)

# loop over emails to calculate spam/ham scores and make NB prediction
for email_id,email in wordcounts.iteritems():
    
    # initialize scores as priors
    spam_score = log(prior_spam)
    ham_score = log(prior_ham)

    # loop over vocab words in email and counts
    for w,c in email.iteritems():
        # add count*conditional probability for each vocab word in email
        spam_score+=c*log(pr_vw_given_spam[w])
        ham_score+=c*log(pr_vw_given_ham[w])

    # true class
    spam = 1*(email_id in spam_ids)
    
    # predicted class
    predict = 1*(spam_score>ham_score)
    
    # output results as 'ID \t truth \t prediction'
    print email_id+'\t'+str(spam)+'\t'+str(predict)


Overwriting ./reducer.py

In [147]:
def hw2_5():
    
    def score(outputfile):
        '''
            Input: reducer Naive Bayes output file with format
                ID \t truth \t prediction
            Returns: Accuracy of classifier prediction
        '''
        # initialize count of examples and correct predictions
        n = 0
        correct=0
    
        # read lines from reducer output file
        with open (outputfile, "r") as outfile:
            for line in outfile.readlines():
                # increment count of number of examples
                n+=1
            
                # split line
                lineList = line.replace('\n','').split('\t')
            
                # true class is in second column
                truth=int(lineList[1])
            
                # predicted class is in third column
                predict=int(lineList[2])
            
                # increment number of correct examples if prediction matches truth
                correct+=(1*truth==predict)
    
        # return percent of correct predictions (accuracy)
        return 1.0*correct/n
    
    # change to problem dir and copy data into dir
    %cd ~/Documents/W261/hw2/hw2_5/
    !cp ../enronemail_1h_cleaned.txt ./
    
    # put data file into HDFS
    !hdfs dfs -rm enronemail_1h_cleaned.txt
    !hdfs dfs -put enronemail_1h_cleaned.txt /user/davidadams
    
    # run Hadoop streaming mapreduce with mapper.py and reducer.py
    !hdfs dfs -rm -r hw2_5Output
    !hadoop jar ~/Documents/W261/hw2/hadoop-*streaming*.jar -mapper "mapper.py '*'" -reducer reducer.py -input enronemail_1h_cleaned.txt -output hw2_5Output
    
    # show output file
    print '\n================================================='
    !hdfs dfs -cat hw2_5Output/part-00000
    
    # calculate and show accuracy
    !hdfs dfs -cat hw2_5Output/part-00000 > 'output.txt'
    outputfile = 'output.txt'
    accuracy = score(outputfile)
    print 'Accuracy: ',accuracy
    
hw2_5()


/Users/davidadams/Documents/W261/hw2/hw2_5
15/09/15 17:38:13 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:38:13 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted enronemail_1h_cleaned.txt
15/09/15 17:38:15 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:38:17 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
rm: `hw2_5Output': No such file or directory
15/09/15 17:38:19 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/15 17:38:20 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
15/09/15 17:38:20 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
15/09/15 17:38:20 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
15/09/15 17:38:20 INFO mapred.FileInputFormat: Total input paths to process : 1
15/09/15 17:38:21 INFO mapreduce.JobSubmitter: number of splits:1
15/09/15 17:38:21 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local552446638_0001
15/09/15 17:38:21 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
15/09/15 17:38:21 INFO mapred.LocalJobRunner: OutputCommitter set in config null
15/09/15 17:38:21 INFO mapreduce.Job: Running job: job_local552446638_0001
15/09/15 17:38:21 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter
15/09/15 17:38:21 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:38:21 INFO mapred.LocalJobRunner: Waiting for map tasks
15/09/15 17:38:21 INFO mapred.LocalJobRunner: Starting task: attempt_local552446638_0001_m_000000_0
15/09/15 17:38:21 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:38:21 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:38:21 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:38:21 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/davidadams/enronemail_1h_cleaned.txt:0+203985
15/09/15 17:38:21 INFO mapred.MapTask: numReduceTasks: 1
15/09/15 17:38:21 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)
15/09/15 17:38:21 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100
15/09/15 17:38:21 INFO mapred.MapTask: soft limit at 83886080
15/09/15 17:38:21 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
15/09/15 17:38:21 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
15/09/15 17:38:21 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
15/09/15 17:38:21 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_5/./mapper.py, *]
15/09/15 17:38:21 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
15/09/15 17:38:21 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
15/09/15 17:38:21 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start
15/09/15 17:38:21 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap
15/09/15 17:38:21 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id
15/09/15 17:38:21 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords
15/09/15 17:38:21 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition
15/09/15 17:38:21 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length
15/09/15 17:38:21 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir
15/09/15 17:38:21 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir
15/09/15 17:38:21 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file
15/09/15 17:38:21 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id
15/09/15 17:38:21 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:38:21 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:38:21 INFO streaming.PipeMapRed: Records R/W=96/1
15/09/15 17:38:21 INFO streaming.PipeMapRed: R/W/S=100/19/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:38:22 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:38:22 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:38:22 INFO mapred.LocalJobRunner: 
15/09/15 17:38:22 INFO mapred.MapTask: Starting flush of map output
15/09/15 17:38:22 INFO mapred.MapTask: Spilling map output
15/09/15 17:38:22 INFO mapred.MapTask: bufstart = 0; bufend = 519017; bufvoid = 104857600
15/09/15 17:38:22 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26152812(104611248); length = 61585/6553600
15/09/15 17:38:22 INFO mapred.MapTask: Finished spill 0
15/09/15 17:38:22 INFO mapred.Task: Task:attempt_local552446638_0001_m_000000_0 is done. And is in the process of committing
15/09/15 17:38:22 INFO mapred.LocalJobRunner: Records R/W=96/1
15/09/15 17:38:22 INFO mapred.Task: Task 'attempt_local552446638_0001_m_000000_0' done.
15/09/15 17:38:22 INFO mapred.LocalJobRunner: Finishing task: attempt_local552446638_0001_m_000000_0
15/09/15 17:38:22 INFO mapred.LocalJobRunner: map task executor complete.
15/09/15 17:38:22 INFO mapred.LocalJobRunner: Waiting for reduce tasks
15/09/15 17:38:22 INFO mapred.LocalJobRunner: Starting task: attempt_local552446638_0001_r_000000_0
15/09/15 17:38:22 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/09/15 17:38:22 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.
15/09/15 17:38:22 INFO mapred.Task:  Using ResourceCalculatorProcessTree : null
15/09/15 17:38:22 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@14dc9b4e
15/09/15 17:38:22 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10
15/09/15 17:38:22 INFO reduce.EventFetcher: attempt_local552446638_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
15/09/15 17:38:22 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local552446638_0001_m_000000_0 decomp: 549813 len: 549817 to MEMORY
15/09/15 17:38:22 INFO reduce.InMemoryMapOutput: Read 549813 bytes from map-output for attempt_local552446638_0001_m_000000_0
15/09/15 17:38:22 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 549813, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->549813
15/09/15 17:38:22 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning
15/09/15 17:38:22 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:38:22 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs
15/09/15 17:38:22 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:38:22 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 549788 bytes
15/09/15 17:38:22 INFO reduce.MergeManagerImpl: Merged 1 segments, 549813 bytes to disk to satisfy reduce memory limit
15/09/15 17:38:22 INFO reduce.MergeManagerImpl: Merging 1 files, 549817 bytes from disk
15/09/15 17:38:22 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
15/09/15 17:38:22 INFO mapred.Merger: Merging 1 sorted segments
15/09/15 17:38:22 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 549788 bytes
15/09/15 17:38:22 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:38:22 INFO mapreduce.Job: Job job_local552446638_0001 running in uber mode : false
15/09/15 17:38:22 INFO mapreduce.Job:  map 100% reduce 0%
15/09/15 17:38:22 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/davidadams/Documents/W261/hw2/hw2_5/./reducer.py]
15/09/15 17:38:22 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
15/09/15 17:38:22 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
15/09/15 17:38:22 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:38:22 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:38:22 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:38:22 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:38:22 INFO streaming.PipeMapRed: R/W/S=10000/0/0 in:NA [rec/s] out:NA [rec/s]
15/09/15 17:38:23 INFO streaming.PipeMapRed: Records R/W=15397/1
15/09/15 17:38:23 INFO streaming.PipeMapRed: MRErrorThread done
15/09/15 17:38:23 INFO streaming.PipeMapRed: mapRedFinished
15/09/15 17:38:23 INFO mapred.Task: Task:attempt_local552446638_0001_r_000000_0 is done. And is in the process of committing
15/09/15 17:38:23 INFO mapred.LocalJobRunner: 1 / 1 copied.
15/09/15 17:38:23 INFO mapred.Task: Task attempt_local552446638_0001_r_000000_0 is allowed to commit now
15/09/15 17:38:23 INFO output.FileOutputCommitter: Saved output of task 'attempt_local552446638_0001_r_000000_0' to hdfs://localhost:9000/user/davidadams/hw2_5Output/_temporary/0/task_local552446638_0001_r_000000
15/09/15 17:38:23 INFO mapred.LocalJobRunner: Records R/W=15397/1 > reduce
15/09/15 17:38:23 INFO mapred.Task: Task 'attempt_local552446638_0001_r_000000_0' done.
15/09/15 17:38:23 INFO mapred.LocalJobRunner: Finishing task: attempt_local552446638_0001_r_000000_0
15/09/15 17:38:23 INFO mapred.LocalJobRunner: reduce task executor complete.
15/09/15 17:38:24 INFO mapreduce.Job:  map 100% reduce 100%
15/09/15 17:38:24 INFO mapreduce.Job: Job job_local552446638_0001 completed successfully
15/09/15 17:38:24 INFO mapreduce.Job: Counters: 35
	File System Counters
		FILE: Number of bytes read=1311490
		FILE: Number of bytes written=2451155
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=407970
		HDFS: Number of bytes written=2672
		HDFS: Number of read operations=13
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=4
	Map-Reduce Framework
		Map input records=100
		Map output records=15397
		Map output bytes=519017
		Map output materialized bytes=549817
		Input split bytes=115
		Combine input records=0
		Combine output records=0
		Reduce input groups=100
		Reduce shuffle bytes=549817
		Reduce input records=15397
		Reduce output records=100
		Spilled Records=30794
		Shuffled Maps =1
		Failed Shuffles=0
		Merged Map outputs=1
		GC time elapsed (ms)=10
		Total committed heap usage (bytes)=608698368
	Shuffle Errors
		BAD_ID=0
		CONNECTION=0
		IO_ERROR=0
		WRONG_LENGTH=0
		WRONG_MAP=0
		WRONG_REDUCE=0
	File Input Format Counters 
		Bytes Read=203985
	File Output Format Counters 
		Bytes Written=2672
15/09/15 17:38:24 INFO streaming.StreamJob: Output directory: hw2_5Output

=================================================
15/09/15 17:38:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
0010.2003-12-18.GP	1	0
0010.2001-06-28.SA_and_HP	1	1
0001.2000-01-17.beck	0	0
0018.1999-12-14.kaminski	0	0
0005.1999-12-12.kaminski	0	0
0011.2001-06-29.SA_and_HP	1	1
0008.2004-08-01.BG	1	1
0009.1999-12-14.farmer	0	0
0017.2003-12-18.GP	1	1
0011.2001-06-28.SA_and_HP	1	1
0015.2001-07-05.SA_and_HP	1	1
0015.2001-02-12.kitchen	0	0
0009.2001-06-26.SA_and_HP	1	1
0017.1999-12-14.kaminski	0	0
0012.2000-01-17.beck	0	0
0003.2000-01-17.beck	0	0
0004.2001-06-12.SA_and_HP	1	1
0008.2001-06-12.SA_and_HP	1	1
0007.2001-02-09.kitchen	0	0
0016.2004-08-01.BG	1	1
0015.2000-06-09.lokay	0	0
0005.1999-12-14.farmer	0	0
0016.1999-12-15.farmer	0	0
0013.2004-08-01.BG	1	1
0005.2003-12-18.GP	1	1
0012.2001-02-09.kitchen	0	0
0003.2001-02-08.kitchen	0	0
0009.2001-02-09.kitchen	0	0
0006.2001-02-08.kitchen	0	0
0014.2003-12-19.GP	1	1
0010.1999-12-14.farmer	0	0
0010.2004-08-01.BG	1	1
0014.1999-12-14.kaminski	0	0
0006.1999-12-13.kaminski	0	0
0011.1999-12-14.farmer	0	0
0013.1999-12-14.kaminski	0	0
0001.2001-02-07.kitchen	0	0
0008.2001-02-09.kitchen	0	0
0007.2003-12-18.GP	1	1
0017.2004-08-02.BG	1	1
0014.2004-08-01.BG	1	1
0006.2003-12-18.GP	1	1
0016.2001-07-05.SA_and_HP	1	1
0008.2003-12-18.GP	1	1
0014.2001-07-04.SA_and_HP	1	1
0001.2001-04-02.williams	0	0
0012.2000-06-08.lokay	0	0
0014.1999-12-15.farmer	0	0
0009.2000-06-07.lokay	0	0
0001.1999-12-10.farmer	0	0
0008.2001-06-25.SA_and_HP	1	1
0017.2001-04-03.williams	0	0
0014.2001-02-12.kitchen	0	0
0016.2001-07-06.SA_and_HP	1	1
0015.1999-12-15.farmer	0	0
0009.1999-12-13.kaminski	0	0
0001.2000-06-06.lokay	0	0
0011.2004-08-01.BG	1	1
0004.2004-08-01.BG	1	1
0018.2003-12-18.GP	1	1
0002.1999-12-13.farmer	0	0
0016.2003-12-19.GP	1	1
0004.1999-12-14.farmer	0	0
0015.2003-12-19.GP	1	1
0006.2004-08-01.BG	1	1
0009.2003-12-18.GP	1	1
0007.1999-12-14.farmer	0	0
0005.2000-06-06.lokay	0	0
0010.1999-12-14.kaminski	0	0
0007.2000-01-17.beck	0	0
0003.1999-12-14.farmer	0	0
0003.2004-08-01.BG	1	1
0017.2004-08-01.BG	1	1
0013.2001-06-30.SA_and_HP	1	1
0003.1999-12-10.kaminski	0	0
0012.1999-12-14.farmer	0	0
0004.1999-12-10.kaminski	0	0
0018.2001-07-13.SA_and_HP	1	1
0002.2001-02-07.kitchen	0	0
0007.2004-08-01.BG	1	1
0012.1999-12-14.kaminski	0	0
0005.2001-06-23.SA_and_HP	1	1
0007.1999-12-13.kaminski	0	0
0017.2000-01-17.beck	0	0
0006.2001-06-25.SA_and_HP	1	1
0006.2001-04-03.williams	0	0
0005.2001-02-08.kitchen	0	0
0002.2003-12-18.GP	1	1
0003.2003-12-18.GP	1	1
0013.2001-04-03.williams	0	0
0004.2001-04-02.williams	0	0
0010.2001-02-09.kitchen	0	0
0001.1999-12-10.kaminski	0	1
0013.1999-12-14.farmer	0	0
0015.1999-12-14.kaminski	0	0
0012.2003-12-19.GP	1	1
0016.2001-02-12.kitchen	0	0
0002.2004-08-01.BG	1	1
0002.2001-05-25.SA_and_HP	1	1
0011.2003-12-18.GP	1	1
15/09/15 17:38:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Accuracy:  0.98

In [ ]: