簡體   English   中英

在pyspark中划分矩陣RDD

[英]partition a matrix RDD in pyspark

我正在將一個numpy矩陣轉換為分區大小為10的RDD。

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矩陣 ,但無法獲得正確的結果。

我終於自己寫了。 :)。 我知道這不是很有效,但是在發布更好的答案之前,它可以解決問題並可能對某人有所幫助。

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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM