-- My Load Function load all the columns from the rowkey and and transform the map into the bag. The bag is sorted by $0 PATTERN_0 = load 'hbase://table1' using myUDFPackage.HBaseLoadUDF('mycf', '-caching 10','myKey1') as (columncontent_0:map[]); INTERMEDIATE_BAG_0 = foreach PATTERN_0 generate flatten(myUDFPackage.MapToBagUDF($0)) as (output0:chararray); -- Same here PATTERN_1 = load 'hbase://table2' using myUDFPackage.HBaseLoadUDF('mycf', '-caching 10','myKey2') as (columncontent_1:map[]); INTERMEDIATE_BAG_1 = foreach PATTERN_1 generate flatten(myUDFPackage.MapToBagUDF($0)) as (output1:chararray); -- Join both bags INTERMEDIATE_BAG_3 = JOIN INTERMEDIATE_BAG_0 BY $0, INTERMEDIATE_BAG_1 BY $0 USING 'merge'; INTERMEDIATE_BAG_3 = FOREACH INTERMEDIATE_BAG_3 GENERATE $0;