public static String getOptimizedPlanAsJson(Optimizer compiler, PackagedProgram prog, int parallelism) throws CompilerException, ProgramInvocationException { PlanJSONDumpGenerator jsonGen = new PlanJSONDumpGenerator(); return jsonGen.getOptimizerPlanAsJSON((OptimizedPlan) getOptimizedPlan(compiler, prog, parallelism)); }
PlanJSONDumpGenerator jsonGen = new PlanJSONDumpGenerator(); StringWriter string = new StringWriter(1024); try (PrintWriter pw = new PrintWriter(string)) { jsonGen.dumpPactPlanAsJSON(previewPlan, pw);
if (visit(child, writer, first)) { first = false; visit(innerChild, writer, true); visit(worksetRoot, writer, true); visit(solutionDelta, writer, false); addProperty(writer, "Partitioning", gp.getPartitioning().name(), true); if (gp.getPartitioningFields() != null) { addProperty(writer, "Partitioned on", gp.getPartitioningFields().toString(), false); addProperty(writer, "Partitioning Order", gp.getPartitioningOrdering().toString(), false); addProperty(writer, "Partitioning Order", "(none)", false); addProperty(writer, "Uniqueness", "not unique", false); addProperty(writer, "Uniqueness", n.getUniqueFields().toString(), false); addProperty(writer, "Order", lp.getOrdering().toString(), true); addProperty(writer, "Order", "(none)", true); addProperty(writer, "Grouped on", lp.getGroupedFields().toString(), false); } else { addProperty(writer, "Grouping", "not grouped", false); addProperty(writer, "Uniqueness", "not unique", false);
/** * Creates a JSON representation of the given dataflow plan. * * @param plan The dataflow plan. * @return The dataflow plan (prior to optimization) as a JSON string. */ public static String getPlanAsJSON(Plan plan) { List<DataSinkNode> sinks = Optimizer.createPreOptimizedPlan(plan); return new PlanJSONDumpGenerator().getPactPlanAsJSON(sinks); } }
@Test public void testGetExecutionPlan() { try { PackagedProgram prg = new PackagedProgram(TestOptimizerPlan.class, "/dev/random", "/tmp"); assertNotNull(prg.getPreviewPlan()); InetAddress mockAddress = InetAddress.getLocalHost(); InetSocketAddress mockJmAddress = new InetSocketAddress(mockAddress, 12345); Configuration config = new Configuration(); config.setString(JobManagerOptions.ADDRESS, mockJmAddress.getHostName()); config.setInteger(JobManagerOptions.PORT, mockJmAddress.getPort()); Optimizer optimizer = new Optimizer(new DataStatistics(), new DefaultCostEstimator(), config); OptimizedPlan op = (OptimizedPlan) ClusterClient.getOptimizedPlan(optimizer, prg, -1); assertNotNull(op); PlanJSONDumpGenerator dumper = new PlanJSONDumpGenerator(); assertNotNull(dumper.getOptimizerPlanAsJSON(op)); // test HTML escaping PlanJSONDumpGenerator dumper2 = new PlanJSONDumpGenerator(); dumper2.setEncodeForHTML(true); String htmlEscaped = dumper2.getOptimizerPlanAsJSON(op); assertEquals(-1, htmlEscaped.indexOf('\\')); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }
public static String formatNumber(double number) { return formatNumber(number, ""); }
public String getPactPlanAsJSON(List<DataSinkNode> nodes) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); dumpPactPlanAsJSON(nodes, pw); return sw.toString(); }
public void dumpOptimizerPlanAsJSON(OptimizedPlan plan, PrintWriter writer) { Collection<SinkPlanNode> sinks = plan.getDataSinks(); if (sinks instanceof List) { dumpOptimizerPlanAsJSON((List<SinkPlanNode>) sinks, writer); } else { List<SinkPlanNode> n = new ArrayList<SinkPlanNode>(); n.addAll(sinks); dumpOptimizerPlanAsJSON(n, writer); } }
public void dumpPactPlanAsJSON(List<DataSinkNode> nodes, PrintWriter writer) { @SuppressWarnings("unchecked") List<DumpableNode<?>> n = (List<DumpableNode<?>>) (List<?>) nodes; compilePlanToJSON(n, writer); }
private void compilePlanToJSON(List<DumpableNode<?>> nodes, PrintWriter writer) { // initialization to assign node ids this.nodeIds = new HashMap<DumpableNode<?>, Integer>(); this.nodeCnt = 0; // JSON header writer.print("{\n\t\"nodes\": [\n\n"); // Generate JSON for plan for (int i = 0; i < nodes.size(); i++) { visit(nodes.get(i), writer, i == 0); } // JSON Footer writer.println("\n\t]\n}"); }
private void dump(Plan p) { try { List<DataSinkNode> sinks = Optimizer.createPreOptimizedPlan(p); PlanJSONDumpGenerator dumper = new PlanJSONDumpGenerator(); String json = dumper.getPactPlanAsJSON(sinks); try (JsonParser parser = new JsonFactory().createParser(json)) { while (parser.nextToken() != null) {} } } catch (JsonParseException e) { e.printStackTrace(); Assert.fail("JSON Generator produced malformatted output: " + e.getMessage()); } catch (Exception e) { e.printStackTrace(); Assert.fail("An error occurred in the test: " + e.getMessage()); } } }
@Test public void testGetExecutionPlan() { try { jobManagerSystem.actorOf( Props.create(FailureReturningActor.class), JobMaster.JOB_MANAGER_NAME); PackagedProgram prg = new PackagedProgram(TestOptimizerPlan.class, "/dev/random", "/tmp"); assertNotNull(prg.getPreviewPlan()); Optimizer optimizer = new Optimizer(new DataStatistics(), new DefaultCostEstimator(), config); OptimizedPlan op = (OptimizedPlan) ClusterClient.getOptimizedPlan(optimizer, prg, 1); assertNotNull(op); PlanJSONDumpGenerator dumper = new PlanJSONDumpGenerator(); assertNotNull(dumper.getOptimizerPlanAsJSON(op)); // test HTML escaping PlanJSONDumpGenerator dumper2 = new PlanJSONDumpGenerator(); dumper2.setEncodeForHTML(true); String htmlEscaped = dumper2.getOptimizerPlanAsJSON(op); assertEquals(-1, htmlEscaped.indexOf('\\')); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }
@Test public void testFormatNumberNoDigit() { assertEquals("0.0", PlanJSONDumpGenerator.formatNumber(0)); assertEquals("0.00", PlanJSONDumpGenerator.formatNumber(0.0000000001)); assertEquals("-1.0", PlanJSONDumpGenerator.formatNumber(-1.0)); assertEquals("1.00", PlanJSONDumpGenerator.formatNumber(1)); assertEquals("17.00", PlanJSONDumpGenerator.formatNumber(17)); assertEquals("17.44", PlanJSONDumpGenerator.formatNumber(17.44)); assertEquals("143.00", PlanJSONDumpGenerator.formatNumber(143)); assertEquals("143.40", PlanJSONDumpGenerator.formatNumber(143.4)); assertEquals("143.50", PlanJSONDumpGenerator.formatNumber(143.5)); assertEquals("143.60", PlanJSONDumpGenerator.formatNumber(143.6)); assertEquals("143.45", PlanJSONDumpGenerator.formatNumber(143.45)); assertEquals("143.55", PlanJSONDumpGenerator.formatNumber(143.55)); assertEquals("143.65", PlanJSONDumpGenerator.formatNumber(143.65)); assertEquals("143.66", PlanJSONDumpGenerator.formatNumber(143.655)); assertEquals("1.13 K", PlanJSONDumpGenerator.formatNumber(1126.0)); assertEquals("11.13 K", PlanJSONDumpGenerator.formatNumber(11126.0)); assertEquals("118.13 K", PlanJSONDumpGenerator.formatNumber(118126.0)); assertEquals("1.44 M", PlanJSONDumpGenerator.formatNumber(1435126.0)); }
public String getPactPlanAsJSON(List<DataSinkNode> nodes) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); dumpPactPlanAsJSON(nodes, pw); return sw.toString(); }
public void dumpOptimizerPlanAsJSON(OptimizedPlan plan, File toFile) throws IOException { PrintWriter pw = null; try { pw = new PrintWriter(new FileOutputStream(toFile), false); dumpOptimizerPlanAsJSON(plan, pw); pw.flush(); } finally { if (pw != null) { pw.close(); } } }
public void dumpOptimizerPlanAsJSON(List<SinkPlanNode> nodes, PrintWriter writer) { @SuppressWarnings("unchecked") List<DumpableNode<?>> n = (List<DumpableNode<?>>) (List<?>) nodes; compilePlanToJSON(n, writer); }
private void compilePlanToJSON(List<DumpableNode<?>> nodes, PrintWriter writer) { // initialization to assign node ids this.nodeIds = new HashMap<DumpableNode<?>, Integer>(); this.nodeCnt = 0; // JSON header writer.print("{\n\t\"nodes\": [\n\n"); // Generate JSON for plan for (int i = 0; i < nodes.size(); i++) { visit(nodes.get(i), writer, i == 0); } // JSON Footer writer.println("\n\t]\n}"); }
@Override public String getExecutionPlan() throws Exception { OptimizedPlan op = compileProgram("unused"); PlanJSONDumpGenerator jsonGen = new PlanJSONDumpGenerator(); return jsonGen.getOptimizerPlanAsJSON(op); }
/** * Creates a JSON representation of the given dataflow plan. * * @param plan The dataflow plan. * @return The dataflow plan (prior to optimization) as a JSON string. */ public static String getPlanAsJSON(Plan plan) { List<DataSinkNode> sinks = Optimizer.createPreOptimizedPlan(plan); return new PlanJSONDumpGenerator().getPactPlanAsJSON(sinks); } }
PlanJSONDumpGenerator jsonGen = new PlanJSONDumpGenerator(); StringWriter string = new StringWriter(1024); try (PrintWriter pw = new PrintWriter(string)) { jsonGen.dumpPactPlanAsJSON(previewPlan, pw);