私は大きなファイル(10億以上のレコード)を読んでいて、それを他の3つのファイルと結合していますが、大きなテーブルでの複数の読み取りを回避するためにプロセスをより効率的にすることができるかどうか疑問に思いました。小さなテーブルは収まらない可能性がありますメモリー。
A = join smalltable1 by (f1,f2) RIGHT OUTER,massive by (f1,f2) ;
B = join smalltable2 by (f3) RIGHT OUTER, A by (f3) ;
C = join smalltable3 by (f4) ,B by (f4) ;
私が考えていた別の方法は、udfを書き込んで、1回の読み取りで値を置き換えることですが、小さなファイルがメモリに収まらないため、udfが効率的かどうかはわかりません。実装は次のようになります。
A = LOAD massive
B = generate f1,udfToTranslateF1(f1),f2,udfToTranslateF2(f2),f3,udfToTranslateF3(f3)
あなたの考えに感謝します...