-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmap-reduce01.py
44 lines (29 loc) · 1.06 KB
/
map-reduce01.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from collections import defaultdict
def map_function(text):
words = text.split()
return [(word, 1) for word in words]
def shuffle_function(mapped_values):
shuffled = defaultdict(list)
for key, value in mapped_values:
shuffled[key].append(value)
return shuffled.items()
def reduce_function(shuffled_values):
reduced = {}
for key, values in shuffled_values:
reduced[key] = sum(values)
return reduced
# Виконання MapReduce
def map_reduce(text):
# Крок 1: Маппінг
mapped_values = map_function(text)
# Крок 2: Shuffle
shuffled_values = shuffle_function(mapped_values)
# Крок 3: Редукція
reduced_values = reduce_function(shuffled_values)
return reduced_values
if __name__ == "__main__":
# Вхідний текст для обробки
text = "hello world hello Python hello Student"
# Виконання MapReduce на вхідному тексті
result = map_reduce(text)
print("Результат підрахунку слів:", result)