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 2009/09/21 18:55:36 UTC
svn commit: r817319 - in /hadoop/pig/trunk: CHANGES.txt
src/org/apache/pig/tools/grunt/GruntParser.java
src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj
test/org/apache/pig/test/TestGrunt.java
Author: daijy
Date: Mon Sep 21 16:55:35 2009
New Revision: 817319
URL: http://svn.apache.org/viewvc?rev=817319&view=rev
Log:
PIG-891: Fixing dfs statement for Pig
Modified:
hadoop/pig/trunk/CHANGES.txt
hadoop/pig/trunk/src/org/apache/pig/tools/grunt/GruntParser.java
hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj
hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java
Modified: hadoop/pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=817319&r1=817318&r2=817319&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Mon Sep 21 16:55:35 2009
@@ -26,6 +26,8 @@
IMPROVEMENTS
+PIG-891: Fixing dfs statement for Pig (zjffdu via daijy).
+
OPTIMIZATIONS
BUG FIXES
Modified: hadoop/pig/trunk/src/org/apache/pig/tools/grunt/GruntParser.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/tools/grunt/GruntParser.java?rev=817319&r1=817318&r2=817319&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/tools/grunt/GruntParser.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/tools/grunt/GruntParser.java Mon Sep 21 16:55:35 2009
@@ -47,6 +47,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.fs.FsShell;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.RunningJob;
import org.apache.hadoop.mapred.JobID;
@@ -57,6 +58,7 @@
import org.apache.pig.backend.datastorage.DataStorageException;
import org.apache.pig.backend.datastorage.ElementDescriptor;
import org.apache.pig.backend.executionengine.ExecutionEngine;
+import org.apache.pig.backend.hadoop.datastorage.ConfigurationUtil;
import org.apache.pig.backend.hadoop.executionengine.HExecutionEngine;
import org.apache.pig.backend.executionengine.ExecJob;
import org.apache.pig.backend.executionengine.ExecJob.JOB_STATUS;
@@ -191,6 +193,7 @@
mDfs = mPigServer.getPigContext().getDfs();
mLfs = mPigServer.getPigContext().getLfs();
mConf = mPigServer.getPigContext().getProperties();
+ shell = new FsShell(ConfigurationUtil.toConfiguration(mConf));
// TODO: this violates the abstraction layer decoupling between
// front end and back end and needs to be changed.
@@ -731,6 +734,14 @@
}
}
+ protected void processFsCommand(String[] cmdTokens) throws IOException{
+ try {
+ shell.run(cmdTokens);
+ } catch (Exception e) {
+ throw new IOException(e);
+ }
+ }
+
private class ExplainState {
public long mTime;
public int mCount;
@@ -764,4 +775,5 @@
private ExplainState mExplain;
private int mNumFailedJobs;
private int mNumSucceededJobs;
+ private FsShell shell;
}
Modified: hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj?rev=817319&r1=817318&r2=817319&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj (original)
+++ hadoop/pig/trunk/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj Mon Sep 21 16:55:35 2009
@@ -65,6 +65,8 @@
abstract protected void printAliases() throws IOException;
+ abstract protected void processFsCommand(String[] cmdTokens) throws IOException;
+
abstract protected void processDescribe(String alias) throws IOException;
abstract protected void processExplain(String alias, String script, boolean isVerbose, String format, String target, List<String> params, List<String> files) throws IOException, ParseException;
@@ -130,6 +132,7 @@
// commands
TOKEN: {<CAT: "cat">}
+TOKEN: {<FS: "fs">}
TOKEN: {<CD: "cd">}
TOKEN: {<COPY: "cp">}
TOKEN: {<COPYFROMLOCAL: "copyFromLocal">}
@@ -360,6 +363,7 @@
{
Token t1, t2;
String val = null;
+ List<String> cmdTokens = new ArrayList<String>();
}
{
@@ -367,6 +371,23 @@
<EOL>
{prompt();}
|
+ <FS>
+ (
+ t1 = GetPath()
+ {
+ cmdTokens.add(t1.image);
+ while(true){
+ try{
+ t1=GetPath();
+ cmdTokens.add(t1.image);
+ }catch(ParseException e){
+ break;
+ }
+ }
+ processFsCommand(cmdTokens.toArray(new String[cmdTokens.size()]));
+ }
+ )+
+ |
<CAT>
(
t1 = GetPath()
Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java?rev=817319&r1=817318&r2=817319&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestGrunt.java Mon Sep 21 16:55:35 2009
@@ -26,6 +26,7 @@
import org.apache.pig.ExecType;
import org.apache.pig.PigException;
import org.apache.pig.PigServer;
+import org.apache.pig.backend.executionengine.ExecException;
import org.apache.pig.impl.PigContext;
import org.apache.pig.tools.grunt.Grunt;
import org.apache.pig.tools.pigscript.parser.ParseException;
@@ -709,4 +710,39 @@
assertFalse(server.existsFile("done"));
assertTrue(caught);
}
+
+ public void testFsCommand(){
+
+ try {
+ PigServer server = new PigServer(ExecType.MAPREDUCE,cluster.getProperties());
+ PigContext context = server.getPigContext();
+
+ String strCmd =
+ "fs -ls /;"
+ +"fs -mkdir /tmp;"
+ +"fs -mkdir /tmp/foo;"
+ +"cd /tmp;"
+ +"fs -rmr bar; fs -rmr foo/baz;"
+ +"fs -copyFromLocal test/org/apache/pig/test/data/passwd bar;"
+ +"a = load 'bar';"
+ +"cd foo;"
+ +"store a into 'baz';"
+ +"cd /;"
+ +"fs -ls .;"
+ +"fs -rm /tmp/foo/baz;";
+
+ ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes());
+ InputStreamReader reader = new InputStreamReader(cmd);
+
+ Grunt grunt = new Grunt(new BufferedReader(reader), context);
+ grunt.exec();
+
+ } catch (ExecException e) {
+ e.printStackTrace();
+ fail();
+ } catch (Throwable e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
}