почему мы использовали oop mapreduce для обработки данных? почему бы не сделать на локальной машине? - PullRequest
0 голосов
/ 09 января 2020

Я смущен тем, что я пытаюсь принять вероятность как миллион случайных чисел. и я пробую оба способа, используя MapReduce в google dataPro c, а также запускаю скрипт python на spyder, чтобы сделать то же самое. но чем быстрее была местная машина. тогда почему мы используем Mapreduce для этого? Ниже приведены коды, которые я использую.

#!/usr/bin/env python3
import timeit
start = timeit.default_timer()
from collections import Counter
import numpy as np
import matplotlib.pyplot as plt

#Random Number Generating
x = np.random.randint(low=1, high=100, size=1000000)

counts = Counter(x)
total = sum(counts.values())
d1 = {k:v/total for k,v in counts.items()}
grad = d1.keys()
prob = d1.values()
#print(str(grad))
#print(str(prob))
#bins = 20
plt.hist(prob,bins=20, normed=1, facecolor='blue', alpha=0.5)
#plt.plot(bins, hist, 'r--')
plt.xlabel('Probability')
plt.ylabel('Number Of Students')
plt.title('Histogram of Students Grade')
plt.subplots_adjust(left=0.15)
plt.show()

stop = timeit.default_timer()
print('Time: ', stop - start)

#!/usr/bin/env python3
"""mapper.py"""
import sys

# Get input lines from stdin
for line in sys.stdin:
    # Remove spaces from beginning and end of the line
    #line = line.strip()

    # Split it into tokens
    #tokens = line.split()

    #Get probability_mass values
    for probability_mass in line:
        print("None\t{}".format(probability_mass))
        #print(str(probability_mass)+ '\t1')
        #print('%s\t%s' % (probability_mass, None))


#!/usr/bin/env python3
"""reducer.py"""
import sys
from collections import defaultdict

counts = defaultdict(float)

# Get input from stdin
for line in sys.stdin:
    #Remove spaces from beginning and end of the line
    #line = line.strip()

    # skip empty lines
    if not line:
        continue  

    # parse the input from mapper.py
    k,v = line.split('\t', 1)
    counts[v] += 1
total = (float(sum(counts.values())))
#total = sum(counts.values())
probability_mass = {k:v/total for k,v in counts.items()}
print(probability_mass)

1 Ответ

4 голосов
/ 09 января 2020

Had oop используется для хранения и обработки больших данных. В oop данные хранятся на недорогих обычных серверах, которые работают как кластеры. Это распределенная файловая система, обеспечивающая одновременную обработку и отказоустойчивость. Если бы oop Модель программирования MapReduce использовалась для более быстрого хранения и извлечения данных из его узлов.

Google Datapro c - это Apache Имеет oop в облаке. Когда объем огромен, одной машины недостаточно для обработки Map / Reduce. 1 миллион это маленький объем.

...