You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by rd...@apache.org on 2010/11/16 21:47:19 UTC
svn commit: r1035803 - in /pig/branches/branch-0.8:
src/org/apache/pig/tools/pigstats/PigStatsUtil.java
test/org/apache/pig/test/TestPigRunner.java
Author: rding
Date: Tue Nov 16 20:47:19 2010
New Revision: 1035803
URL: http://svn.apache.org/viewvc?rev=1035803&view=rev
Log:
PIG-1723: Need to limit the length of Pig counter names
Modified:
pig/branches/branch-0.8/src/org/apache/pig/tools/pigstats/PigStatsUtil.java
pig/branches/branch-0.8/test/org/apache/pig/test/TestPigRunner.java
Modified: pig/branches/branch-0.8/src/org/apache/pig/tools/pigstats/PigStatsUtil.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/src/org/apache/pig/tools/pigstats/PigStatsUtil.java?rev=1035803&r1=1035802&r2=1035803&view=diff
==============================================================================
--- pig/branches/branch-0.8/src/org/apache/pig/tools/pigstats/PigStatsUtil.java (original)
+++ pig/branches/branch-0.8/src/org/apache/pig/tools/pigstats/PigStatsUtil.java Tue Nov 16 20:47:19 2010
@@ -72,6 +72,10 @@ public abstract class PigStatsUtil {
= "MultiInputCounters";
private static final Log LOG = LogFactory.getLog(PigStatsUtil.class);
+
+ // Restrict total string size of a counter name to 64 characters.
+ // Leave 24 characters for prefix string.
+ private static final int COUNTER_NAME_LIMIT = 40;
/**
* Returns the count for the given counter name in the counter group
@@ -134,13 +138,18 @@ public abstract class PigStatsUtil {
} else {
slash = uri.lastIndexOf(SEPARATOR);
}
+ String shortName = null;
if (scolon==-1) {
- return uri.substring(slash+1);
+ shortName = uri.substring(slash+1);
}
if (slash < scolon) {
- return uri.substring(slash+1, scolon);
+ shortName = uri.substring(slash+1, scolon);
+ }
+ if (shortName != null && shortName.length() > COUNTER_NAME_LIMIT) {
+ shortName = shortName.substring(shortName.length()
+ - COUNTER_NAME_LIMIT);
}
- return null;
+ return shortName;
}
/**
Modified: pig/branches/branch-0.8/test/org/apache/pig/test/TestPigRunner.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/test/org/apache/pig/test/TestPigRunner.java?rev=1035803&r1=1035802&r2=1035803&view=diff
==============================================================================
--- pig/branches/branch-0.8/test/org/apache/pig/test/TestPigRunner.java (original)
+++ pig/branches/branch-0.8/test/org/apache/pig/test/TestPigRunner.java Tue Nov 16 20:47:19 2010
@@ -39,6 +39,7 @@ import org.apache.pig.backend.hadoop.dat
import org.apache.pig.impl.PigContext;
import org.apache.pig.impl.io.FileLocalizer;
import org.apache.pig.newplan.Operator;
+import org.apache.pig.tools.pigstats.InputStats;
import org.apache.pig.tools.pigstats.JobStats;
import org.apache.pig.tools.pigstats.OutputStats;
import org.apache.pig.tools.pigstats.PigProgressNotificationListener;
@@ -428,6 +429,44 @@ public class TestPigRunner {
}
@Test
+ public void testLongCounterName() throws Exception {
+ // Pig now restricts the string size of its counter name to less than 64 characters.
+ PrintWriter w = new PrintWriter(new FileWriter("myinputfile"));
+ w.println("1\t2\t3");
+ w.println("5\t3\t4");
+ w.println("3\t4\t5");
+ w.println("5\t6\t7");
+ w.println("3\t7\t8");
+ w.close();
+ String longfilename = "longlonglonglonglonglonglonglonglonglonglonglongfilefilefilename";
+ Util.copyFromLocalToCluster(cluster, "myinputfile", longfilename);
+
+ PrintWriter w1 = new PrintWriter(new FileWriter(PIG_FILE));
+ w1.println("A = load '" + INPUT_FILE + "' as (a0:int, a1:int, a2:int);");
+ w1.println("B = load '" + longfilename + "' as (a0:int, a1:int, a2:int);");
+ w1.println("C = join A by a0, B by a0;");
+ w1.println("store C into '" + OUTPUT_FILE + "';");
+ w1.close();
+
+ try {
+ String[] args = { PIG_FILE };
+ PigStats stats = PigRunner.run(args, new TestNotificationListener());
+
+ assertTrue(stats.isSuccessful());
+
+ assertEquals(1, stats.getNumberJobs());
+ List<InputStats> inputs = stats.getInputStats();
+ assertEquals(2, inputs.size());
+ for (InputStats instats : inputs) {
+ assertEquals(5, instats.getNumberRecords());
+ }
+ } finally {
+ new File(PIG_FILE).delete();
+ Util.deleteFile(cluster, OUTPUT_FILE);
+ }
+ }
+
+ @Test
public void testRegisterExternalJar() throws Exception {
String[] args = { "-Dpig.additional.jars=pig-withouthadoop.jar",
"-Dmapred.job.queue.name=default",