You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2012/03/03 03:17:03 UTC

svn commit: r1296560 - in /pig/trunk: CHANGES.txt src/org/apache/pig/Main.java src/org/apache/pig/impl/PigContext.java src/org/apache/pig/scripting/jython/JythonScriptEngine.java test/e2e/pig/drivers/TestDriverPig.pm test/e2e/pig/tests/turing_jython.conf

Author: daijy
Date: Sat Mar  3 02:17:02 2012
New Revision: 1296560

URL: http://svn.apache.org/viewvc?rev=1296560&view=rev
Log:
PIG-2548: Support for providing parameters to python script

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/Main.java
    pig/trunk/src/org/apache/pig/impl/PigContext.java
    pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java
    pig/trunk/test/e2e/pig/drivers/TestDriverPig.pm
    pig/trunk/test/e2e/pig/tests/turing_jython.conf

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1296560&r1=1296559&r2=1296560&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Sat Mar  3 02:17:02 2012
@@ -143,6 +143,8 @@ INCOMPATIBLE CHANGES
 
 IMPROVEMENTS
 
+PIG-2548: Support for providing parameters to python script (daijy)
+
 PIG-2518: Add ability to clean ivy cache in build.xml (daijy)
 
 PIG-2300: Pig Docs - release 0.10.0 (and 0.9.1) (chandec via daijy)

Modified: pig/trunk/src/org/apache/pig/Main.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/Main.java?rev=1296560&r1=1296559&r2=1296560&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/Main.java (original)
+++ pig/trunk/src/org/apache/pig/Main.java Sat Mar  3 02:17:02 2012
@@ -368,6 +368,8 @@ static int run(String args[], PigProgres
             scriptState.registerListener(listener);
         }
 
+        pigContext.getProperties().setProperty("pig.cmd.args", commandLine);
+
         if(logFileName == null && !userSpecifiedLog) {
             logFileName = validateLogFile(properties.getProperty("pig.logfile"), null);
         }
@@ -531,10 +533,9 @@ static int run(String args[], PigProgres
             grunt.run();
             return ReturnCode.SUCCESS;
         } else {
+            pigContext.getProperties().setProperty(PigContext.PIG_CMD_ARGS_REMAINDERS, ObjectSerializer.serialize(remainders));
+            
             // They have a pig script they want us to run.
-            if (remainders.length > 1) {
-                   throw new RuntimeException("Encountered unexpected arguments on command line - please check the command line.");
-            }
             mode = ExecMode.FILE;
 
             FileLocalizer.FetchFileRet localFileRet = FileLocalizer.fetchFile(properties, remainders[0]);

Modified: pig/trunk/src/org/apache/pig/impl/PigContext.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/impl/PigContext.java?rev=1296560&r1=1296559&r2=1296560&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/impl/PigContext.java (original)
+++ pig/trunk/src/org/apache/pig/impl/PigContext.java Sat Mar  3 02:17:02 2012
@@ -63,6 +63,8 @@ public class PigContext implements Seria
     public static final String JOB_NAME = "jobName";
     public static final String JOB_NAME_PREFIX= "PigLatin";
     public static final String JOB_PRIORITY = "jobPriority";
+    public static final String PIG_CMD_ARGS_REMAINDERS = "pig.cmd.args.remainders";
+    
     
     /* NOTE: we only serialize some of the stuff 
      * 

Modified: pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java?rev=1296560&r1=1296559&r2=1296560&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java (original)
+++ pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java Sat Mar  3 02:17:02 2012
@@ -36,6 +36,7 @@ import org.apache.pig.FuncSpec;
 import org.apache.pig.PigServer;
 import org.apache.pig.backend.executionengine.ExecException;
 import org.apache.pig.impl.PigContext;
+import org.apache.pig.impl.util.ObjectSerializer;
 import org.apache.pig.impl.util.Utils;
 import org.apache.pig.parser.ParserException;
 import org.apache.pig.scripting.ScriptEngine;
@@ -351,6 +352,16 @@ public class JythonScriptEngine extends 
             registerFunctions(scriptFile, null, pigContext);
         }
 
+        if (pigContext.getProperties().get(PigContext.PIG_CMD_ARGS_REMAINDERS)!=null) {
+            try {
+                String[] argv = (String[])ObjectSerializer.deserialize(
+                        pigContext.getProperties().getProperty(PigContext.PIG_CMD_ARGS_REMAINDERS));
+                PythonInterpreter.initialize(null, null, argv);
+            } catch (IOException e) {
+                throw new ExecException("Cannot deserialize command line arguments", e);
+            }
+        }
+        
         Interpreter.setMain(true);
         FileInputStream fis = new FileInputStream(scriptFile);
         try {

Modified: pig/trunk/test/e2e/pig/drivers/TestDriverPig.pm
URL: http://svn.apache.org/viewvc/pig/trunk/test/e2e/pig/drivers/TestDriverPig.pm?rev=1296560&r1=1296559&r2=1296560&view=diff
==============================================================================
--- pig/trunk/test/e2e/pig/drivers/TestDriverPig.pm (original)
+++ pig/trunk/test/e2e/pig/drivers/TestDriverPig.pm Sat Mar  3 02:17:02 2012
@@ -261,6 +261,10 @@ sub runPigCmdLine
 
     # Add pig file and redirections 
     push(@cmd, $pigfile);
+
+    if (defined($testCmd->{'additional_cmd_args'})) {
+        push(@cmd, $testCmd->{'additional_cmd_args'});
+    }
     my $command= join (" ", @cmd) . " 1> $stdoutfile 2> $stderrfile";
 
     # Run the command
@@ -433,6 +437,9 @@ sub runPig
 
     push(@cmd, $pigfile);
 
+    if (defined($testCmd->{'additional_cmd_args'})) {
+        push(@cmd, @{$testCmd->{'additional_cmd_args'}});
+    }
 
     # Run the command
     print $log "$0::$className::$subName INFO: Going to run pig command: @cmd\n";

Modified: pig/trunk/test/e2e/pig/tests/turing_jython.conf
URL: http://svn.apache.org/viewvc/pig/trunk/test/e2e/pig/tests/turing_jython.conf?rev=1296560&r1=1296559&r2=1296560&view=diff
==============================================================================
--- pig/trunk/test/e2e/pig/tests/turing_jython.conf (original)
+++ pig/trunk/test/e2e/pig/tests/turing_jython.conf Sat Mar  3 02:17:02 2012
@@ -448,7 +448,32 @@ else:
 \
                         ,'floatpostprocess' => 1
                         ,'delimiter' => '       '
-                }
+	},{
+                'num' => 13
+                ,'additional_cmd_args' => ['studenttab10k']
+                ,'pig' => q\#!/usr/bin/python
+from org.apache.pig.scripting import Pig
+import sys
+
+P = Pig.compile("A = load ':INPATH:/singlefile/" + sys.argv[1] + "' as (name, age, gpa);" +
+"store A into ':OUTPATH:';");
+
+Q = P.bind()
+
+result = Q.runSingle()
+
+if result.isSuccessful():
+    print "Pig job PASSED"
+else:
+    raise "Pig job FAILED"
+\,
+
+             'verify_pig_script' => q\A = load ':INPATH:/singlefile/studenttab10k' as (name, age, gpa);
+                                      store A into ':OUTPATH:';
+\
+                        ,'floatpostprocess' => 1
+                        ,'delimiter' => '       '
+        }
       ]
         },{
 	'name' => 'Jython_Diagnostics'