You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by pr...@apache.org on 2010/04/30 18:05:32 UTC

svn commit: r939727 - in /hadoop/pig/trunk: ./ src/org/apache/pig/ test/org/apache/pig/test/ test/org/apache/pig/test/data/GoldenFiles/

Author: pradeepkth
Date: Fri Apr 30 16:05:31 2010
New Revision: 939727

URL: http://svn.apache.org/viewvc?rev=939727&view=rev
Log:
PIG-1378: har url not usable in Pig scripts (pradeepkth)

Modified:
    hadoop/pig/trunk/CHANGES.txt
    hadoop/pig/trunk/src/org/apache/pig/LoadFunc.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestLoad.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestLoadFunc.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanMigrationVisitor.java
    hadoop/pig/trunk/test/org/apache/pig/test/TestStore.java
    hadoop/pig/trunk/test/org/apache/pig/test/data/GoldenFiles/MRC18.gld

Modified: hadoop/pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=939727&r1=939726&r2=939727&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Fri Apr 30 16:05:31 2010
@@ -51,6 +51,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+1378: har url not usable in Pig scripts (pradeepkth)
+
 PIG-1395:  Mapside cogroup runs out of memory (ashutoshc)
 
 PIG-1383: Remove empty svn directorirs from source tree (rding)

Modified: hadoop/pig/trunk/src/org/apache/pig/LoadFunc.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/LoadFunc.java?rev=939727&r1=939726&r2=939727&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/LoadFunc.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/LoadFunc.java Fri Apr 30 16:05:31 2010
@@ -247,11 +247,13 @@ public abstract class LoadFunc {
         
         String[] fnames = getPathStrings(location);
         for (String fname: fnames) {
-            Path p = new Path(fname.trim());
+            // remove leading/trailing whitespace(s)
+            fname = fname.trim();
+            Path p = new Path(fname);
             URI uri = p.toUri();
-            // if the supplied location has an authority and is absolute, just
-            // use it
-            if(uri.getAuthority() == null || ! p.isAbsolute()) {
+            // if the supplied location has a scheme (i.e. uri is absolute) or 
+            // an absolute path, just use it.
+            if(! (uri.isAbsolute() || p.isAbsolute())) {
                 String scheme = uri.getScheme();
                 if (scheme != null) {
                     scheme = scheme.toLowerCase();

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestLoad.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestLoad.java?rev=939727&r1=939726&r2=939727&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestLoad.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestLoad.java Fri Apr 30 16:05:31 2010
@@ -22,7 +22,12 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.regex.Pattern;
@@ -49,6 +54,7 @@ import org.apache.pig.impl.logicalLayer.
 import org.apache.pig.impl.logicalLayer.LogicalOperator;
 import org.apache.pig.impl.logicalLayer.LogicalPlan;
 import org.apache.pig.impl.logicalLayer.LogicalPlanBuilder;
+import org.apache.pig.impl.logicalLayer.parser.ParseException;
 import org.apache.pig.impl.plan.OperatorKey;
 import org.apache.pig.test.utils.GenPhyOp;
 import org.apache.pig.test.utils.LogicalPlanTester;
@@ -125,7 +131,8 @@ public class TestLoad extends junit.fram
     public void testLoadRemoteAbs() throws Exception {
         for (PigServer pig : servers) {
             pc = pig.getPigContext();
-            checkLoadPath("/tmp/test","/tmp/test");
+            boolean noConversionExpected = true;
+            checkLoadPath("/tmp/test","/tmp/test", noConversionExpected);
         }
     }
 
@@ -140,7 +147,13 @@ public class TestLoad extends junit.fram
     @Test
     public void testLoadRemoteAbsScheme() throws Exception {
         pc = servers[0].getPigContext();
-        checkLoadPath("hdfs:/tmp/test","/tmp/test");
+        boolean noConversionExpected = true;
+        checkLoadPath("hdfs:/tmp/test","hdfs:/tmp/test", noConversionExpected);
+        
+        // check if a location 'hdfs:<abs path>' can actually be read using PigStorage
+        String[] inputFileNames = new String[] {
+                "/tmp/TestLoad-testLoadRemoteAbsSchema-input.txt"};
+        testLoadingMultipleFiles(inputFileNames, "hdfs:" + inputFileNames[0]);
     }
 
     @Test
@@ -153,7 +166,8 @@ public class TestLoad extends junit.fram
     public void testLoadRemoteNormalize() throws Exception {
         for (PigServer pig : servers) {
             pc = pig.getPigContext();
-            checkLoadPath("/tmp/foo/../././","/tmp");
+            boolean noConversionExpected = true;
+            checkLoadPath("/tmp/foo/../././","/tmp/foo/../././", noConversionExpected);
         }
     }
 
@@ -181,11 +195,24 @@ public class TestLoad extends junit.fram
         }
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void testCommaSeparatedString3() throws Exception {
         PigServer pig = servers[0];
         pc = pig.getPigContext();
-        checkLoadPath("hdfs:/tmp/test,hdfs:/tmp/test2,hdfs:/tmp/test3","/tmp/test,/tmp/test2,/tmp/test3");
+        boolean noConversionExpected = true;
+        checkLoadPath("hdfs:/tmp/test,hdfs:/tmp/test2,hdfs:/tmp/test3",
+                "hdfs:/tmp/test,hdfs:/tmp/test2,hdfs:/tmp/test3", noConversionExpected );
+        
+        // check if a location 'hdfs:<abs path>,hdfs:<abs path>' can actually be 
+        // read using PigStorage
+        String[] inputFileNames = new String[] {
+                "/tmp/TestLoad-testCommaSeparatedString3-input1.txt",
+                "/tmp/TestLoad-testCommaSeparatedString3-input2.txt"};
+        String inputString = "hdfs:" + inputFileNames[0] + ",hdfs:" + 
+        inputFileNames[1];
+        testLoadingMultipleFiles(inputFileNames, inputString);
+        
     }
     
     @Test
@@ -202,6 +229,18 @@ public class TestLoad extends junit.fram
             pc = pig.getPigContext();
             checkLoadPath("/usr/pig/{a,c},usr/pig/b","/usr/pig/{a,c},/tmp/usr/pig/b");
         }
+       
+        // check if a location '<abs path>,<relative path>' can actually be 
+        // read using PigStorage
+        String loadLocationString = "/tmp/TestLoad-testCommaSeparatedStringMixed-input{1,2}.txt," +
+        "TestLoad-testCommaSeparatedStringMixed-input3.txt"; // current working dir is set to /tmp in checkLoadPath()
+       
+        String[] inputFileNames = new String[] {
+                "/tmp/TestLoad-testCommaSeparatedStringMixed-input1.txt",
+                "/tmp/TestLoad-testCommaSeparatedStringMixed-input2.txt",
+                "/tmp/TestLoad-testCommaSeparatedStringMixed-input3.txt",};
+        pc = servers[0].getPigContext(); // test in map reduce mode
+        testLoadingMultipleFiles(inputFileNames, loadLocationString);
     }
     
     @Test
@@ -220,8 +259,51 @@ public class TestLoad extends junit.fram
         LOLoad load = (LOLoad) lp.getRoots().get(0);
         Assert.assertEquals(nonDfsUrl, load.getInputFile().getFileName());
     }
-
+    
+    @SuppressWarnings("unchecked")
+    private void testLoadingMultipleFiles(String[] inputFileNames, 
+            String loadLocationString) throws IOException, ParseException {
+        
+        String[][] inputStrings = new String[][] {
+                new String[] { "hello\tworld"},
+                new String[] { "bye\tnow"},
+                new String[] { "all\tgood"}
+        };
+        List<Tuple> expected = Arrays.asList(new Tuple[] {
+                (Tuple) Util.getPigConstant("('hello', 'world')"),
+                (Tuple) Util.getPigConstant("('bye', 'now')"),
+                (Tuple) Util.getPigConstant("('all', 'good')")});
+        
+        List<Tuple> expectedBasedOnNumberOfInputs = new ArrayList<Tuple>();
+        for(int i = 0; i < inputFileNames.length; i++) {
+            Util.createInputFile(pc, inputFileNames[i], inputStrings[i]);
+            expectedBasedOnNumberOfInputs.add(expected.get(i));
+        }
+        try {
+            servers[0].registerQuery(" a = load '" + loadLocationString + "' as " +
+                    "(s1:chararray, s2:chararray);");
+            Iterator<Tuple> it = servers[0].openIterator("a");
+            
+            List<Tuple> actual = new ArrayList<Tuple>();
+            while(it.hasNext()) {
+                actual.add(it.next());
+            }
+            Collections.sort(expectedBasedOnNumberOfInputs);
+            Collections.sort(actual);
+            Assert.assertEquals(expectedBasedOnNumberOfInputs, actual);
+        } finally {
+            for(int i = 0; i < inputFileNames.length; i++) {
+                Util.deleteFile(pc, inputFileNames[i]);
+            }
+        }
+    }
+    
     private void checkLoadPath(String orig, String expected) throws Exception {
+        checkLoadPath(orig, expected, false);
+    }
+
+    private void checkLoadPath(String orig, String expected, 
+            boolean noConversionExpected) throws Exception {
         
         boolean[] multiquery = {true, false};
         
@@ -251,15 +333,19 @@ public class TestLoad extends junit.fram
             LOLoad load = (LOLoad)op;
     
             String p = load.getInputFile().getFileName();
-            System.err.println("DEBUG: p:" + p + " expected:" + expected +", exectype:" + pc.getExecType());        
-            if (pc.getExecType() == ExecType.MAPREDUCE) {
-                Assert.assertTrue(p.matches("hdfs://[0-9a-zA-Z:\\.]*.*"));
-                Assert.assertEquals(p.replaceAll("hdfs://[0-9a-zA-Z:\\.]*/", "/"),
-                        expected);
-            } else {
-                Assert.assertTrue(p.matches("file://[0-9a-zA-Z:\\.]*.*"));
-                Assert.assertEquals(p.replaceAll("file://[0-9a-zA-Z:\\.]*/", "/"),
-                        expected);
+            System.err.println("DEBUG: p:" + p + " expected:" + expected +", exectype:" + pc.getExecType());
+            if(noConversionExpected) {
+                Assert.assertEquals(p, expected);
+            } else  {
+                if (pc.getExecType() == ExecType.MAPREDUCE) {
+                    Assert.assertTrue(p.matches(".*hdfs://[0-9a-zA-Z:\\.]*.*"));
+                    Assert.assertEquals(p.replaceAll("hdfs://[0-9a-zA-Z:\\.]*/", "/"),
+                            expected);
+                } else {
+                    Assert.assertTrue(p.matches(".*file://[0-9a-zA-Z:\\.]*.*"));
+                    Assert.assertEquals(p.replaceAll("file://[0-9a-zA-Z:\\.]*/", "/"),
+                            expected);
+                }
             }
         }
     }

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestLoadFunc.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestLoadFunc.java?rev=939727&r1=939726&r2=939727&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestLoadFunc.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestLoadFunc.java Fri Apr 30 16:05:31 2010
@@ -59,7 +59,7 @@ public class TestLoadFunc {
     @Test
     public void testGetAbsolutePath() throws IOException {
         // test case: simple absolute path 
-        Assert.assertEquals(curHdfsRoot + "/hadoop/test/passwd",
+        Assert.assertEquals("/hadoop/test/passwd",
                 LoadFunc.getAbsolutePath("/hadoop/test/passwd", curHdfsDir));      
     }
 
@@ -89,9 +89,8 @@ public class TestLoadFunc {
     @Test
     public void testCommaSeparatedString() throws Exception {
         // test case: comma separated absolute paths
-        Assert.assertEquals(curHdfsRoot + "/usr/pig/a," + 
-                curHdfsRoot + "/usr/pig/b",
-                LoadFunc.getAbsolutePath("/usr/pig/a,/usr/pig/b", 
+        Assert.assertEquals("/usr/pig/a,/usr/pig/b,/usr/pig/c",
+                LoadFunc.getAbsolutePath("/usr/pig/a,/usr/pig/b,/usr/pig/c", 
                         curHdfsDir));
     }
 
@@ -104,17 +103,8 @@ public class TestLoadFunc {
     }
 
     @Test
-    public void testCommaSeparatedString3() throws Exception {
-        // test case: comma separated absolute paths
-        Assert.assertEquals(curHdfsRoot + "/tmp/test," + 
-                curHdfsRoot + "/tmp/test2," + curHdfsRoot + "/tmp/test3",
-                LoadFunc.getAbsolutePath("/tmp/test,/tmp/test2,/tmp/test3", 
-                        curHdfsDir));
-    }
-    
-    @Test
     public void testCommaSeparatedString4() throws Exception {
-        // test case: comma separated paths with hahoop glob
+        // test case: comma separated paths with hadoop glob
         Assert.assertEquals(curHdfsRoot + "/user/pig/test/{a,c}," + 
                 curHdfsRoot + "/user/pig/test/b",
                 LoadFunc.getAbsolutePath("test/{a,c},test/b", curHdfsDir));
@@ -122,8 +112,8 @@ public class TestLoadFunc {
 
     @Test
     public void testCommaSeparatedString5() throws Exception {
-        // test case: comma separated paths with hahoop glob
-        Assert.assertEquals(curHdfsRoot + "/test/data/{a,c}," +
+        // test case: comma separated paths with hadoop glob
+        Assert.assertEquals("/test/data/{a,c}," +
                 curHdfsRoot + "/user/pig/test/b",
                 LoadFunc.getAbsolutePath("/test/data/{a,c},test/b", 
                         curHdfsDir));
@@ -131,9 +121,8 @@ public class TestLoadFunc {
     
     @Test
     public void testCommaSeparatedString6() throws Exception {
-        // test case: comma separated paths with hahoop glob
-        Assert.assertEquals(curHdfsRoot + "/user/pig/test/{a,c}," + 
-                curHdfsRoot + "/test/data/b",
+        // test case: comma separated paths with hasoop glob
+        Assert.assertEquals(curHdfsRoot + "/user/pig/test/{a,c},/test/data/b",
                 LoadFunc.getAbsolutePath("test/{a,c},/test/data/b",
                         curHdfsDir));
     }    
@@ -141,8 +130,7 @@ public class TestLoadFunc {
     @Test
     public void testCommaSeparatedString7() throws Exception {
         // test case: comma separated paths with white spaces
-        Assert.assertEquals(curHdfsRoot + "/user/pig/test/{a,c}," + 
-                curHdfsRoot + "/test/data/b",
+        Assert.assertEquals(curHdfsRoot + "/user/pig/test/{a,c},/test/data/b",
                 LoadFunc.getAbsolutePath("test/{a,c}, /test/data/b",
                         curHdfsDir));
     }    
@@ -154,5 +142,14 @@ public class TestLoadFunc {
                 curHdfsRoot + "/test/data/b",
                 LoadFunc.getAbsolutePath(", /test/data/b",
                         curHdfsDir));
+    }
+    
+    @Test
+    public void testHarUrl() throws Exception {
+        // test case: input location is a har:// url
+        Assert.assertEquals("har:///user/pig/harfile",
+                LoadFunc.getAbsolutePath("har:///user/pig/harfile",
+                        curHdfsDir));
     }   
+    
 }

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanMigrationVisitor.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanMigrationVisitor.java?rev=939727&r1=939726&r2=939727&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanMigrationVisitor.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanMigrationVisitor.java Fri Apr 30 16:05:31 2010
@@ -214,7 +214,7 @@ public class TestLogicalPlanMigrationVis
         LogicalSchema aschema = new LogicalSchema();    	
         aschema.addField(new LogicalSchema.LogicalFieldSchema("id", null, DataType.BYTEARRAY));
         aschema.addField(new LogicalSchema.LogicalFieldSchema("d", null, DataType.BYTEARRAY));
-        LOLoad load = new LOLoad(new FileSpec("file:///test/d.txt", new FuncSpec("org.apache.pig.builtin.PigStorage")), aschema, expected);
+        LOLoad load = new LOLoad(new FileSpec("/test/d.txt", new FuncSpec("org.apache.pig.builtin.PigStorage")), aschema, expected);
         expected.add(load);
         
         LOForEach foreach = new LOForEach(expected);
@@ -239,7 +239,7 @@ public class TestLogicalPlanMigrationVis
         foreach.setInnerPlan(innerPlan);    	
         expected.add(foreach);
         
-        LOStore s = new LOStore(expected, new FileSpec("file:///test/empty", new FuncSpec("org.apache.pig.builtin.PigStorage")));
+        LOStore s = new LOStore(expected, new FileSpec("/test/empty", new FuncSpec("org.apache.pig.builtin.PigStorage")));
       
         expected.add(s);
         
@@ -352,7 +352,7 @@ public class TestLogicalPlanMigrationVis
         aschema2.addField(new LogicalSchema.LogicalFieldSchema("t", aschema3, DataType.TUPLE));
         aschema.addField(new LogicalSchema.LogicalFieldSchema("d", aschema2, DataType.BAG));        
         
-        LOLoad load = new LOLoad(new FileSpec("file:///test/d.txt", new FuncSpec("org.apache.pig.builtin.PigStorage")), aschema, expected);
+        LOLoad load = new LOLoad(new FileSpec("/test/d.txt", new FuncSpec("org.apache.pig.builtin.PigStorage")), aschema, expected);
         expected.add(load);         
         
         LOForEach foreach2 = new LOForEach(expected);
@@ -377,7 +377,7 @@ public class TestLogicalPlanMigrationVis
         foreach2.setInnerPlan(innerPlan);    	
         expected.add(foreach2); 
                 
-        LOStore s = new LOStore(expected, new FileSpec("file:///test/empty", new FuncSpec("org.apache.pig.builtin.PigStorage")));
+        LOStore s = new LOStore(expected, new FileSpec("/test/empty", new FuncSpec("org.apache.pig.builtin.PigStorage")));
       
         expected.add(s);
         

Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestStore.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestStore.java?rev=939727&r1=939726&r2=939727&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestStore.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestStore.java Fri Apr 30 16:05:31 2010
@@ -362,7 +362,7 @@ public class TestStore extends junit.fra
 
     @Test
     public void testStoreRemoteAbsScheme() throws Exception {
-        checkStorePath("hdfs:/tmp/test","/tmp/test");
+        checkStorePath("hdfs:/tmp/test","hdfs:/tmp/test");
     }
 
     @Test
@@ -372,7 +372,7 @@ public class TestStore extends junit.fra
 
     @Test
     public void testStoreRemoteNormalize() throws Exception {
-        checkStorePath("/tmp/foo/../././","/tmp");
+        checkStorePath("/tmp/foo/../././","/tmp/foo/../././");
     }
 
     @Test
@@ -657,7 +657,7 @@ public class TestStore extends junit.fra
         if (isTmp) {
             Assert.assertTrue(p.matches("/tmp.*"));
         } else {
-            Assert.assertEquals(p, expected);
+            Assert.assertEquals(expected, p);
         }
     }
 }

Modified: hadoop/pig/trunk/test/org/apache/pig/test/data/GoldenFiles/MRC18.gld
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/data/GoldenFiles/MRC18.gld?rev=939727&r1=939726&r2=939727&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/data/GoldenFiles/MRC18.gld (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/data/GoldenFiles/MRC18.gld Fri Apr 30 16:05:31 2010
@@ -1,10 +1,10 @@
 MapReduce(-1,PigStorage) - scope-125:
 Reduce Plan Empty
-|   Store(file:///tmp:org.apache.pig.builtin.PigStorage) - scope-124
+|   Store(/tmp:org.apache.pig.builtin.PigStorage) - scope-124
 |   |
 |   |---MergeJoin[tuple] - scope-121
 |       |
-|       |---Load(file:///tmp/input1:org.apache.pig.builtin.PigStorage) - scope-117
+|       |---Load(/tmp/input1:org.apache.pig.builtin.PigStorage) - scope-117
 |
 |---MapReduce(1,PigStorage) - scope-126:
     |   Store(file:/tmp/temp-1456742965/tmp-1456742965:org.apache.pig.builtin.BinStorage) - scope-132
@@ -18,4 +18,4 @@ Reduce Plan Empty
     |   |   |
     |   |   Project[tuple][*] - scope-127
     |   |
-    |   |---Load(file:///tmp/input2:org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MergeJoinIndexer('org.apache.pig.builtin.PigStorage','kmonaaafhdhcaabdgkgbhggbcohfhegjgmcoebhchcgbhjemgjhdhehiibncbnjjmhgbjnadaaabejaaaehdgjhkgfhihaaaaaaaabhhaeaaaaaaabhdhcaaeogphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccohagmgbgohdcofagihjhdgjgdgbgmfagmgbgoaaaaaaaaaaaaaaabacaaabfkaaangfgogeepggebgmgmejgohahfhehihcaacfgphcghcogbhagbgdgigfcohagjghcogjgnhagmcohagmgbgocoephagfhcgbhegphcfagmgbgogpkikkjgaddcgofpacaaagemaaakgneghcgpgnefgeghgfhdheaacdemgphcghcpgbhagbgdgigfcphagjghcpgjgnhagmcphfhegjgmcpenhfgmhegjengbhadlemaaafgnelgfhjhdheaaapemgkgbhggbcphfhegjgmcpengbhadlemaaahgnemgfgbhggfhdheaabaemgkgbhggbcphfhegjgmcpemgjhdhedlemaaaegnephahdhbaahoaaafemaaaggnfcgpgphehdhbaahoaaagemaaaignfegpefgeghgfhdhbaahoaaaehihahdhcaacbgphcghcogbhagbgdgigfcohagjghcogjgnhagmcohfhegjgmcoenhfgmhegjengbhaaaaaaaaaaaaaaaacacaaabemaaae
 gnengbhahbaahoaaafhihahdhcaabbgkgbhggbcohfhegjgmcoeigbhdgiengbhaafahnkmbmdbgganbadaaacegaaakgmgpgbgeeggbgdhegphcejaaajhegihcgfhdgigpgmgehihadpeaaaaaaaaaaaamhhaiaaaaaabaaaaaaaaahihdhbaahoaaakdpeaaaaaaaaaaaamhhaiaaaaaabaaaaaaaabhdhcaacegphcghcogbhagbgdgigfcohagjghcogjgnhagmcohagmgbgocoephagfhcgbhegphcelgfhjaaaaaaaaaaaaaaabacaaacekaaacgjgeemaaafhdgdgphagfheaabcemgkgbhggbcpgmgbgoghcpfdhehcgjgoghdlhihaaaaaaaaaaaaaaahiheaaafhdgdgphagfhdhcaafjgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccogfhihahcgfhdhdgjgpgoephagfhcgbhegphchdcofaepfahcgpgkgfgdheaaaaaaaaaaaaaaabacaaaffkaaakgphggfhcgmgpgbgegfgefkaabfhahcgpgdgfhdhdgjgoghecgbghepggfehfhagmgfhdfkaabehcgfhdhfgmhefdgjgoghgmgffehfhagmgfecgbghfkaaaehdhegbhcemaaahgdgpgmhfgngohdheaabfemgkgbhggbcphfhegjgmcpebhchcgbhjemgjhdhedlhihcaagcgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccogfhihahcgfhdhdgjgpg
 oephagfhcgbhegphchdcoefhihahcgfhdhdgjgpgoephagfhcgbhegphcaaaaaaaaaaaaaaabacaaabemaaadgmgpghheaacaemgphcghcpgbhagbgdgigfcpgdgpgngngpgohdcpgmgpghghgjgoghcpemgpghdlhihcaaemgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccofagihjhdgjgdgbgmephagfhcgbhegphcaaaaaaaaaaaaaaabacaaamfkaaafgbgdgdhfgnfkaaangjgohahfheebhehegbgdgigfgeejaabehcgfhbhfgfhdhegfgefagbhcgbgmgmgfgmgjhdgnecaaakhcgfhdhfgmhefehjhagfemaaafgbgmgjgbhdhbaahoaaaoemaaafgjgohahfheheaablemgphcghcpgbhagbgdgigfcphagjghcpgegbhegbcpfehfhagmgfdlemaaaggjgohahfhehdhbaahoaaagemaaangmgjgogfgbghgffehcgbgdgfhcheaachemgphcghcpgbhagbgdgigfcphagjghcphagfgocphfhegjgmcpemgjgogfgbghgffehcgbgdgfhcdlemaaadgmgpghhbaahoaabeemaaahgphfhehahfhehdhbaahoaaagemaaakhagbhcgfgohefagmgbgoheaafaemgphcghcpgbhagbgdgigfcphagjghcpgcgbgdglgfgogecpgigbgegpgphacpgfhigfgdhfhegjgpgogfgoghgjgogfcphagihjhdgjgdgbgmemgbhjgfhccphagmgbgohdcpfagihjhdgjgdgbgmfagmgbgodlemaaadhcgfhdheaaeeemgphcghcpgbhagbgd
 gigfcphagjghcpgcgbgdglgfgogecpgigbgegpgphacpgfhigfgdhfhegjgpgogfgoghgjgogfcphagihjhdgjgdgbgmemgbhjgfhccpfcgfhdhfgmhedlhihcaacbgphcghcogbhagbgdgigfcohagjghcogjgnhagmcohagmgbgocoephagfhcgbhegphcaaaaaaaaaaaaaaabacaaabemaaaegnelgfhjheaacgemgphcghcpgbhagbgdgigfcphagjghcpgjgnhagmcphagmgbgocpephagfhcgbhegphcelgfhjdlhihahbaahoaaapaaaappppppppdchahahahahdhcaaclgphcghcogbhagbgdgigfcogdgpgngngpgohdcogmgpghghgjgoghcogjgnhagmcoemgpghdeekemgpghghgfhccikmpnoicknfncdiacaaabemaaaegogbgngfhbaahoaaaohihaheaafjgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccogfhihahcgfhdhdgjgpgoephagfhcgbhegphchdcofaepfahcgpgkgfgdhehahahdhcaaecgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccofcgfhdhfgmheaaaaaaaaaaaaaaabacaaacecaaamhcgfhehfhcgofdhegbhehfhdemaaaghcgfhdhfgmheheaabcemgkgbhggbcpgmgbgoghcpepgcgkgfgdhedlhihaachahbaahoaaboaaaaaaaahdhbaahoaaaaaaaaaaabhhaeaaaaaaabh
 dhcaabbgkgbhggbcogmgbgoghcoejgohegfghgfhcbcockakephibihdiacaaabejaaafhggbgmhfgfhihcaabagkgbhggbcogmgbgoghcoeohfgngcgfhcigkmjfbnaljeoailacaaaahihaaaaaaaaahihihdhbaahoaaaaaaaaaaabhhaeaaaaaaakhbaahoaabmhihdhbaahoaaakdpeaaaaaaaaaaaamhhaiaaaaaabaaaaaaaabhbaahoaabmhbaahoaaaphihdhbaahoaaaaaaaaaaaahhaeaaaaaaakhihdhbaahoaaaihdhbaahoaaakdpeaaaaaaaaaaaamhhaiaaaaaabaaaaaaaaahiaahi','','b','scope','true')) - scope-118
\ No newline at end of file
+    |   |---Load(/tmp/input2:org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MergeJoinIndexer('org.apache.pig.builtin.PigStorage','kmonaaafhdhcaabdgkgbhggbcohfhegjgmcoebhchcgbhjemgjhdhehiibncbnjjmhgbjnadaaabejaaaehdgjhkgfhihaaaaaaaabhhaeaaaaaaabhdhcaaeogphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccohagmgbgohdcofagihjhdgjgdgbgmfagmgbgoaaaaaaaaaaaaaaabacaaabfkaaangfgogeepggebgmgmejgohahfhehihcaacfgphcghcogbhagbgdgigfcohagjghcogjgnhagmcohagmgbgocoephagfhcgbhegphcfagmgbgogpkikkjgaddcgofpacaaagemaaakgneghcgpgnefgeghgfhdheaacdemgphcghcpgbhagbgdgigfcphagjghcpgjgnhagmcphfhegjgmcpenhfgmhegjengbhadlemaaafgnelgfhjhdheaaapemgkgbhggbcphfhegjgmcpengbhadlemaaahgnemgfgbhggfhdheaabaemgkgbhggbcphfhegjgmcpemgjhdhedlemaaaegnephahdhbaahoaaafemaaaggnfcgpgphehdhbaahoaaagemaaaignfegpefgeghgfhdhbaahoaaaehihahdhcaacbgphcghcogbhagbgdgigfcohagjghcogjgnhagmcohfhegjgmcoenhfgmhegjengbhaaaaaaaaaaaaaaaacacaaabemaaaegnengbh
 ahbaahoaaafhihahdhcaabbgkgbhggbcohfhegjgmcoeigbhdgiengbhaafahnkmbmdbgganbadaaacegaaakgmgpgbgeeggbgdhegphcejaaajhegihcgfhdgigpgmgehihadpeaaaaaaaaaaaamhhaiaaaaaabaaaaaaaaahihdhbaahoaaakdpeaaaaaaaaaaaamhhaiaaaaaabaaaaaaaabhdhcaacegphcghcogbhagbgdgigfcohagjghcogjgnhagmcohagmgbgocoephagfhcgbhegphcelgfhjaaaaaaaaaaaaaaabacaaacekaaacgjgeemaaafhdgdgphagfheaabcemgkgbhggbcpgmgbgoghcpfdhehcgjgoghdlhihaaaaaaaaaaaaaaahiheaaafhdgdgphagfhdhcaafjgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccogfhihahcgfhdhdgjgpgoephagfhcgbhegphchdcofaepfahcgpgkgfgdheaaaaaaaaaaaaaaabacaaaffkaaakgphggfhcgmgpgbgegfgefkaabfhahcgpgdgfhdhdgjgoghecgbghepggfehfhagmgfhdfkaabehcgfhdhfgmhefdgjgoghgmgffehfhagmgfecgbghfkaaaehdhegbhcemaaahgdgpgmhfgngohdheaabfemgkgbhggbcphfhegjgmcpebhchcgbhjemgjhdhedlhihcaagcgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccogfhihahcgfhdhdgjgpgoephagf
 hcgbhegphchdcoefhihahcgfhdhdgjgpgoephagfhcgbhegphcaaaaaaaaaaaaaaabacaaabemaaadgmgpghheaacaemgphcghcpgbhagbgdgigfcpgdgpgngngpgohdcpgmgpghghgjgoghcpemgpghdlhihcaaemgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccofagihjhdgjgdgbgmephagfhcgbhegphcaaaaaaaaaaaaaaabacaaamfkaaafgbgdgdhfgnfkaaangjgohahfheebhehegbgdgigfgeejaabehcgfhbhfgfhdhegfgefagbhcgbgmgmgfgmgjhdgnecaaakhcgfhdhfgmhefehjhagfemaaafgbgmgjgbhdhbaahoaaaoemaaafgjgohahfheheaablemgphcghcpgbhagbgdgigfcphagjghcpgegbhegbcpfehfhagmgfdlemaaaggjgohahfhehdhbaahoaaagemaaangmgjgogfgbghgffehcgbgdgfhcheaachemgphcghcpgbhagbgdgigfcphagjghcphagfgocphfhegjgmcpemgjgogfgbghgffehcgbgdgfhcdlemaaadgmgpghhbaahoaabeemaaahgphfhehahfhehdhbaahoaaagemaaakhagbhcgfgohefagmgbgoheaafaemgphcghcpgbhagbgdgigfcphagjghcpgcgbgdglgfgogecpgigbgegpgphacpgfhigfgdhfhegjgpgogfgoghgjgogfcphagihjhdgjgdgbgmemgbhjgfhccphagmgbgohdcpfagihjhdgjgdgbgmfagmgbgodlemaaadhcgfhdheaaeeemgphcghcpgbhagbgdgigfcph
 agjghcpgcgbgdglgfgogecpgigbgegpgphacpgfhigfgdhfhegjgpgogfgoghgjgogfcphagihjhdgjgdgbgmemgbhjgfhccpfcgfhdhfgmhedlhihcaacbgphcghcogbhagbgdgigfcohagjghcogjgnhagmcohagmgbgocoephagfhcgbhegphcaaaaaaaaaaaaaaabacaaabemaaaegnelgfhjheaacgemgphcghcpgbhagbgdgigfcphagjghcpgjgnhagmcphagmgbgocpephagfhcgbhegphcelgfhjdlhihahbaahoaaapaaaappppppppdchahahahahdhcaaclgphcghcogbhagbgdgigfcogdgpgngngpgohdcogmgpghghgjgoghcogjgnhagmcoemgpghdeekemgpghghgfhccikmpnoicknfncdiacaaabemaaaegogbgngfhbaahoaaaohihaheaafjgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccogfhihahcgfhdhdgjgpgoephagfhcgbhegphchdcofaepfahcgpgkgfgdhehahahdhcaaecgphcghcogbhagbgdgigfcohagjghcogcgbgdglgfgogecogigbgegpgphacogfhigfgdhfhegjgpgogfgoghgjgogfcohagihjhdgjgdgbgmemgbhjgfhccofcgfhdhfgmheaaaaaaaaaaaaaaabacaaacecaaamhcgfhehfhcgofdhegbhehfhdemaaaghcgfhdhfgmheheaabcemgkgbhggbcpgmgbgoghcpepgcgkgfgdhedlhihaachahbaahoaaboaaaaaaaahdhbaahoaaaaaaaaaaabhhaeaaaaaaabhdhcaabb
 gkgbhggbcogmgbgoghcoejgohegfghgfhcbcockakephibihdiacaaabejaaafhggbgmhfgfhihcaabagkgbhggbcogmgbgoghcoeohfgngcgfhcigkmjfbnaljeoailacaaaahihaaaaaaaaahihihdhbaahoaaaaaaaaaaabhhaeaaaaaaakhbaahoaabmhihdhbaahoaaakdpeaaaaaaaaaaaamhhaiaaaaaabaaaaaaaabhbaahoaabmhbaahoaaaphihdhbaahoaaaaaaaaaaaahhaeaaaaaaakhihdhbaahoaaaihdhbaahoaaakdpeaaaaaaaaaaaamhhaiaaaaaabaaaaaaaaahiaahi','','b','scope','true')) - scope-118
\ No newline at end of file