return (opName.equals("LOCogroup") || opName.equals("LOCross") || opName.equals("LOJoin") || opName.equals("LOSort"));
}
private static void addAgentLogicalRelationalOperator(LogicalPlan queryPlan, Map<String, LogicalRelationalOperator> aliasOperatorMap, String alias, ClassWithArgs monitorClass, InetSocketAddress masterAddr, List<String> logicalIds, Set<String> withinTaskUpstreamNeighbors, Set<String> withinTaskDownstreamNeighbors, Set<String> crossTaskDownstreamNeighbors, Map<String, List<Integer>> incomingCrossTaskKeyFields, List<Integer> outgoingCrossTaskKeyFields) throws InstantiationException, IllegalAccessException, IOException {
//String monitorFuncName = "monitor_" + alias;
MonitorAgentUDFArgs args = new MonitorAgentUDFArgs(alias, monitorClass, masterAddr, logicalIds, withinTaskUpstreamNeighbors, withinTaskDownstreamNeighbors, crossTaskDownstreamNeighbors, incomingCrossTaskKeyFields, outgoingCrossTaskKeyFields);
// create pig LogicalRelationalOperator equivalent to this syntax:
// "DEFINE " + monitorFuncName + " " + MonitorAgentUDF.class.getCanonicalName() + "(\'" + ObjectSerializer.serialize(args) + "\');
// alias + " = FOREACH " + alias + " GENERATE FLATTEN(" + monitorFuncName + "(" + monitorFieldList(monitorClass.theClass()) + "));