2016-04-20 6 views
0

Я преобразовать матрицу Numpy в RDD с размером перегородки 10.раздела матрица РДД в pyspark

from pyspark import SparkContext, SparkConf 
sc = SparkContext("local", "Simple App")   
x = np.matrix(np.random.normal(mu, sigma, 10000), dtype=np.float) 
x.shape=(100,100) 
rdd = sc.parallelize(x, 10) 

Здесь в каждой строке RDD является объектом матрицы, и я могу получить доступ к нему с помощью rdd.collect()[row_num][0]. Как я могу группировать десять строк в каждый раздел?. Раньше я пытался использовать Dense matrix, я не мог получить правильные результаты.

ответ

0

Я, наконец, написал это сам. :). Я знаю, что это неэффективно, но оно решает проблему и может помочь кому-то, прежде чем будет опубликован лучший ответ.

def group_rows(rdd): 
    rdd_collect = rdd.collect() 
    count = 0 
    key_count = 0 
    result = {"0":[],"1":[],"2":[],"3":[],"4":[],"5":[],"6":[],"7":[],"8":[],"9":[]} 
    for i in range(100): 
     if count < 10: 
      temp_value = result[str(key_count)] 
      temp_value.append(rdd_collect[i][0]) 
      result[str(key_count)] = temp_value 
      count += 1 
     else: 
      count = 0 
      key_count += 1 
    return result 

result = group_rows(e3.rdd) 
temp = e3.sc.parallelize(result.items()) 
sorted(temp.groupByKey().collect()) 
Смежные вопросы