-1
我對PySpark相對來說比較新。PySpark中的所有與所有比較
我有2M火車實例和4M測試實例。每個實例都由一個id和一個特徵向量表示。我有一個自定義函數來計算兩對實例之間的相似度。
作爲一個輸出,我希望每個測試實例都有一個排序的列車實例。這是一個很常見的問題,但實例的數量是挑戰。
由於,我必須做的所有-VS-所有比較,我在PySpark使用的cartesian
產品功能如下:
train_testpairs = trainRDD.cartesian(testRDD)
train_testpairs_simscores = train_testpairs.map(myscore)
在,train_testpairs_simscores,我有以下類型的元組:
(train_id,test_id,score)
但是,現在我想火車實例爲每個測試之類的實例的排序順序:
test_id1,[train_id432, train_id832,.....]
我明白,對於每個test_id,這將有一個2M大小的列表。因此,這個列表的n%也是可以的。可能是最接近測試ID的前1000個列車實例。
我該如何做到這一點?
我試圖按testID分組,然後在每個列表中排序,但groupBy
本身太耗時。 任何幫助,將不勝感激。