2016-11-13 9 views
0

Добрый вечер, дорогой stackoverflow-Community
У меня есть следующая проблема.
Я создал кластер с cloudera для искры.
Существует кластер-менеджер и три рабочих, они не являются локальными.
Я хочу, чтобы кластер выполнял мою программу python на некоторых данных.
Как распределить данные с Python на Sparkcluster

from pyspark import SparkConf, SparkContext 
import matplotlib.pyplot as plt 
import numpy as np 
from time import time as t 

def mapper(point, data): 
    counter = 0 
    for elem in data: 
     dominate = False 
     for i in range(len(elem)): 
      if point[i] < elem[i]: 
       dominate = True 
     if dominate: 
      counter += 1 
    return (point,counter) 


if __name__=="__main__": 

    xx = np.array([-0.51, 51.2]) 
    yy = np.array([0.33, 51.6]) 
    means = [xx.mean(), yy.mean()] 
    stds = [xx.std()/3, yy.std()/3] 
    corr = 0.8 # correlation 
    covs = [[stds[0]**2   , stds[0]*stds[1]*corr], 
      [stds[0]*stds[1]*corr,   stds[1]**2]] 

    m = np.random.multivariate_normal(means, covs, 1000).T 
    data = list(zip(m[0],m[1])) 

    conf = SparkConf().setAppName("Naive_Spark") 
    sc = SparkContext(conf=conf) 
    data_rdd = sc.parallelize(data).partitionBy(3).persist() 

    start = t() 

    mapped = data_rdd.map(lambda x: mapper(x, data)).filter(lambda x: x[1] == len(data)-1).collect()  
    print(mapped) 
    time = str(t()-start) 
    print(mapped) 
    with open('/home/.../Schreibtisch/Naive.txt','a') as f: 
     f.write('Spark: ' + str(mapped) + ' in ' + time + ' ms\n\n') 
    sc.stop() 
    plt.scatter(*zip(*data)) 
    plt.show() 

На данный момент я создаю данные в моем питона-программе и на местном это работает отлично.
Обычно я отправляю свой код и некоторые данные в текстовый файл в свой кластер и выполняю его с помощью spark-submit.
Мой вопрос в том, как разделить мои данные, чтобы три узла получали часть из них для работы с ним.

Привет
Sam

ответ

0

Просто:

  • делает файл доступен на все узлы, используя, например HDFS
  • читать с помощью применимого метода (как SparkContex.texFile)
  • LET Спарка ручки отдых.
+0

Но должен быть способ управления узлами, поэтому я могу закрыть один из них, если я хочу использовать только два из них. – Sam

 Смежные вопросы

  • Нет связанных вопросов^_^