package eu.leads.processor; import com.fasterxml.jackson.databind.ObjectMapper; import eu.leads.processor.execute.Tuple; import eu.leads.processor.execute.operators.GroupByMapper; import eu.leads.processor.execute.operators.GroupByReducer; import eu.leads.processor.query.SQLQuery; import eu.leads.processor.utils.InfinispanUtils; import eu.leads.processor.utils.Utilities; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.Function; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table; import org.infinispan.Cache; import org.infinispan.distexec.mapreduce.MapReduceTask; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Properties; /** * Created with IntelliJ IDEA. * User: vagvaz * Date: 11/5/13 * Time: 12:47 AM * To change this template use File | Settings | File Templates. */ public class GroupByOperatorTest { private static final int numOfTuples = 10; private static final String[] columnNames = {"url", "domain", "pagerank", "body", "sentiment"}; private static final String[] columnType = {"string", "string", "int", "string", "double"}; public static void main(String[] args) { InfinispanUtils.start(); ObjectMapper mapper = new ObjectMapper(); try { // SQLQuery query = new SQLQuery("user", "location", "select url,domain from webpages", "SELECT"); Cache<String, String> inputMap = (Cache<String, String>) InfinispanUtils.getOrCreatePersistentMap("testData"); for (int i = 0; i < numOfTuples; i++) { Tuple t = Utilities.generateTuple(columnNames, columnType); inputMap.put("test:" + (Integer.toString(i)), t.asString()); } System.out.println("intial"); Utilities.printMap(inputMap); Table t = new Table("schema", "webpages"); List<Expression> c = new ArrayList<Expression>(); // Column urlColumn = new Column(t, "url"); Column pagerank = new Column(t, "pagerank"); c.add(pagerank); //c.add(pagerank); ArrayList<Function> functions = new ArrayList<Function>(); Function f = new Function(); f.setName("AVG"); functions.add(f); ExpressionList exp = new ExpressionList(); exp.setExpressions(c); f.setParameters(exp); MapReduceTask<String, String, String, String> task = new MapReduceTask<String, String, String, String>(inputMap); Properties conf = new Properties(); conf.setProperty("output", "groupby"); conf.setProperty("functions", mapper.writeValueAsString(functions)); System.out.println(mapper.writeValueAsString(functions)); conf.setProperty("columns", "url"); task.mappedWith(new GroupByMapper(conf)).reducedWith(new GroupByReducer(conf)); task.execute(); System.out.println("groupby"); Map<String, String> dataMap = InfinispanUtils.getOrCreatePersistentMap("data"); Utilities.printMap(dataMap); System.out.println("goodbye"); } catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } }