GROUP BY とネストされた FOREACH を実行する豚のスクリプトを実行していますが、1 つまたは 2 つの削減タスクのために実行に数時間かかります。例えば:
B = GROUP A BY (fld1, fld2) parallel 50;
C = FOREACH B {
U = A.fld1;
DIST = DISTINCT U;
GENERATE FLATTEN(group), COUNT_STAR(DIST);
}
遅いタスクのカウンターを調べたところ、2 つのレデューサーが他のタスクよりも多くのデータを処理しているように見えることがわかりました。基本的に、私の理解では、データは非常に偏っているため、「遅い」タスクは実際には速いタスクよりも多くの作業を行っています。パフォーマンスを向上させる方法を知りたいのですが?並列処理を増やして作業を分割しようとするのは嫌いですが、それが唯一の方法ですか?