我正在读取一个大文件(超过 10 亿条记录)并将其与其他三个文件连接起来,我想知道是否有任何方法可以更有效地避免对大表进行多次读取。小表可能不适合记忆。
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 并在一次读取中替换值,但我不确定 udf 是否有效,因为小文件不适合内存。实现可能是这样的:
A = LOAD massive
B = generate f1,udfToTranslateF1(f1),f2,udfToTranslateF2(f2),f3,udfToTranslateF3(f3)
欣赏你的想法...