[JAVA高手入] 幾億個item要點先fit到入2gb heap space?
網蛇 2022-8-11 22:32:43 寫晒去disk度先lo
淨係keep N行係memory
如果個function要用到第N+i行
咪buffer out 其中一行 (LRU/LFU)
再load第N+1行去memory

Ads

尻唔易柒 2022-8-11 22:33:02 應該唔關事
岩岩我set左個threshold比個correlation
如果correlation唔過0.5唔會放入個hash map
一改完 行到嘅row數 立即增加
尻唔易柒 2022-8-11 22:34:27 之前幾份功課都有reading/suggested list
今次仆街TA剩係話"有幾個possible methods
你地用下創意諗"
:^(
:^(
尻唔易柒 2022-8-11 22:34:55 big data course黎
:^(
網蛇 2022-8-11 22:35:20 int[50000*50000]就唔會係sparse array啦
西野カナ 2022-8-11 22:35:59 Multithreading 拆細黎做 得唔得
:^(
尻唔易柒 2022-8-11 22:36:17 巴打介唔介意講多啲? 或者share下啲link比我望望點做?

我唔係好熟java
:^(
無奶油俾人用 2022-8-11 22:36:58 試下改變下個表達方式 唔洗理到底背後係想做d咩先,你想做既野係唔係


0 0 0 0 … 50000 個column
0 0 0 0 … 50000
.
.
50000 條row… etc
用坐標表示即係 (0,0)- (50000,50000)


(0, 0) 既數字可以係起0 可以係其他數字
(x,y) 而X,Y 就係隨機既一點,佢可以係任何數字
咁依家你想要既Input 係咩 同埋個output 係咩?

Input:

Output:
尻唔易柒 2022-8-11 22:38:13 但我又唔知實際佢有幾多個value係non-zero

定係應該咁:
1. 行曬所有data 拎個count of non-zero value
2. 先再new int[3][count of non-zero value]
齒乳圍吾 2022-8-11 22:39:15 有冇calculate 個function 嘅return type? 如果冇 你calculate return String 其實都做到
定佢一定要你return Map?
SQQQ 2022-8-11 22:40:03 50000 * 50000 * 16 byte (double size)
成差唔多 40gb, 你點寫入 2gb heap ?

Ads

尻唔易柒 2022-8-11 22:40:07 我依加就係用緊依個方法 (如果我無理解錯你講法)

HashMap<Point, Double>();
point就係{row no., column no.}
double就放個correlation
VVWVV 2022-8-11 22:40:11 個結果已經計到
點會唔知幾多個value係non-zero
:^(
尻唔易柒 2022-8-11 22:41:34 依個就係份功課個問題
:^(
:^(
13wis.林冇頓 2022-8-11 22:42:03 其實你冇Po全條問題出嚟
好難判斷你需要啲乜
尻唔易柒 2022-8-11 22:42:08 因為我未試過行曬所個dataset
:^(
SQQQ 2022-8-11 22:42:14 係用 steaming ?
尻唔易柒 2022-8-11 22:43:27 咁佢又無限死我個return type
依加我用緊public Map<Point, Double> matrix
齒乳圍吾 2022-8-11 22:43:49 你個point unique架嘛 你咁樣仲儲多左嘢
在線中 2022-8-11 22:43:54 sparse matrix
:^(
尻唔易柒 2022-8-11 22:44:24
:^(

Ads

妳是我心上人 2022-8-11 22:44:34
:^(
無料放送 2022-8-11 22:45:06
:^(
VVWVV 2022-8-11 22:45:06 唔好咁複雜
point就係{row no., column no., value}
淨係non-zero先記低
網蛇 2022-8-11 22:45:12 唔關java事 所有language都可以用同一個approach
你memory裝唔晒咁咪寫去disk先lo
整個matrix-like class

N = 5000 // 例子
Matrix:
- private matrix = hashmap<int, array[50000]> // row index -> row

getLRURowIdx(): // 自己implement LRU

Get(int i, int j):
   if (!matrix.contains(i))  {
         if (matrix.size() >= N) delete(matrix, getLRURowIdx())
         // load matrix[i] from disk
    }
   return matrix.get(i)[j]