public static AggregateResult build(List<String[]> keys, List<double[]> values, List<Integer> counts, long startTimestamp, long stopTimestamp) { if (keys.size() > values.size()) { throw new IllegalArgumentException("keys' size: " + keys.size() + " not equal with values' size: " + values.size()); } AggregateResult result = new AggregateResult(); result.setStartTimestamp(startTimestamp); result.setStopTimestamp(stopTimestamp); WritableList<GroupbyKeyValue> keyValues = new WritableList<GroupbyKeyValue>(GroupbyKeyValue.class, keys.size()); for (int i = 0; i < keys.size(); i++) { String[] key = keys.get(i); GroupbyKey gkey = new GroupbyKey(); for (String k : key) { gkey.addValue(k.getBytes()); } GroupbyValue gvalue = new GroupbyValue(); double[] value = values.get(i); for (double v : value) { gvalue.add(v); gvalue.addMeta(counts.get(i)); } keyValues.add(new GroupbyKeyValue(gkey, gvalue)); } result.setKeyValues(keyValues); return result; } }
@Override public List<GroupbyKeyValue> read() throws IOException { return this.result.getKeyValues(); }
public void update(byte[] region, byte[] row, AggregateResult result) { AggregateResult _result = result; regionCounter ++; kvCounter += _result.getKeyValues().size(); if(this.startTimestamp == 0 || this.startTimestamp > _result.getStartTimestamp()){ this.startTimestamp = _result.getStartTimestamp(); } if(this.stopTimestamp == 0 || this.stopTimestamp < _result.getStopTimestamp()){ this.stopTimestamp = _result.getStopTimestamp(); } for(GroupbyKeyValue keyValue:_result.getKeyValues()){ update(keyValue); } }
public static AggregateResult fromPBResult(AggregateProtos.AggregateResult pbResult) throws IOException { ByteArrayDataInput byteArrayDataInput = ByteStreams.newDataInput(pbResult.getByteArray().toByteArray()); ; AggregateResult result = new AggregateResult(); result.readFields(byteArrayDataInput); return result; }
@Test public void testAggregateResultTimestamp() { AggregateResult result1 = new AggregateResult(); result1.setStartTimestamp(2L); result1.setStopTimestamp(4L); AggregateResult result2 = new AggregateResult(); result2.setStartTimestamp(1L); result2.setStopTimestamp(3L); AggregateResultCallback callback = new AggregateResultCallbackImpl(new ArrayList<AggregateFunctionType>()); callback.update(null, null, result1); callback.update(null, null, result2); AggregateResult result3 = callback.result(); Assert.assertEquals(1L, result3.getStartTimestamp()); Assert.assertEquals(4L, result3.getStopTimestamp()); }
AggregateFunctionType.avg, AggregateFunctionType.sum)); AggregateResult result1 = AggregateResult.build( Arrays.asList( new String[]{"a", "b"}, callback.update(null, null, result1); AggregateResult callbackResult = callback.result(); Assert.assertEquals(2, callbackResult.getKeyValues().size()); GroupbyKeyValue row0 = callbackResult.getKeyValues().get(0); Assert.assertEquals(new GroupbyKey(Arrays.asList("a".getBytes(), "b".getBytes())), row0.getKey()); Assert.assertEquals(2.0, row0.getValue().get(0).get(), 0.00001); GroupbyKeyValue row1 = callbackResult.getKeyValues().get(1); Assert.assertEquals(new GroupbyKey(Arrays.asList("a".getBytes(), "b".getBytes(), "c".getBytes())), row1.getKey()); Assert.assertEquals(4.0, row1.getValue().get(0).get(), 0.00001);
public long getLastTimestamp() { return this.result.getStopTimestamp(); } }
public long getFirstTimestamp() { return this.result.getStartTimestamp(); }
public static AggregateProtos.AggregateResult toPBAggregateResult(AggregateResult result) throws IOException { ByteArrayDataOutput output = ByteStreams.newDataOutput(); result.write(output); return AggregateProtos.AggregateResult.newBuilder() .setByteArray(ByteString.copyFrom(output.toByteArray())) .build(); } }
AggregateResult result1 = new AggregateResult(); result1.setStartTimestamp(System.currentTimeMillis()); final List<GroupbyKeyValue> keyValues = new ArrayList<GroupbyKeyValue>(); value2.addMeta(2); keyValues.add(new GroupbyKeyValue(key2, value2)); result1.setKeyValues(keyValues); result1.setStopTimestamp(System.currentTimeMillis()); callback.update(null, null, result1); Assert.assertTrue(result2.getStopTimestamp() > result2.getStartTimestamp()); Assert.assertTrue(result2.getStartTimestamp() > 0); Assert.assertTrue(result2.getStopTimestamp() > 0);
public static AggregateResult fromPBResult(AggregateProtos.AggregateResult pbResult) throws IOException { ByteArrayDataInput byteArrayDataInput = ByteStreams.newDataInput(pbResult.getByteArray().toByteArray());; AggregateResult result = new AggregateResult(); result.readFields(byteArrayDataInput); return result; }
public long getLastTimestamp() { return this.result.getStopTimestamp(); } }
public long getFirstTimestamp() { return this.result.getStartTimestamp(); }
public static AggregateProtos.AggregateResult toPBAggregateResult(AggregateResult result) throws IOException { ByteArrayDataOutput output = ByteStreams.newDataOutput(); result.write(output); return AggregateProtos.AggregateResult.newBuilder() .setByteArray(ByteString.copyFrom(output.toByteArray())) .build(); } }
public static AggregateResult build(List<String[]> keys,List<double[]> values,List<Integer> counts,long startTimestamp,long stopTimestamp){ if(keys.size() > values.size()){ throw new IllegalArgumentException("keys' size: "+keys.size()+" not equal with values' size: "+values.size()); } AggregateResult result = new AggregateResult(); result.setStartTimestamp(startTimestamp); result.setStopTimestamp(stopTimestamp); WritableList<GroupbyKeyValue> keyValues = new WritableList<GroupbyKeyValue>(GroupbyKeyValue.class,keys.size()); for(int i=0;i<keys.size();i++) { String[] key = keys.get(i); GroupbyKey gkey = new GroupbyKey(); for (String k : key) { gkey.addValue(k.getBytes()); } GroupbyValue gvalue = new GroupbyValue(); double[] value = values.get(i); for(double v:value){ gvalue.add(v); gvalue.addMeta(counts.get(i)); } keyValues.add(new GroupbyKeyValue(gkey, gvalue)); } result.setKeyValues(keyValues); return result; } }
@Override public List<GroupbyKeyValue> read() throws IOException { return this.result.getKeyValues(); }
public void update(byte[] region, byte[] row, AggregateResult result) { AggregateResult _result = result; regionCounter++; kvCounter += _result.getKeyValues().size(); if (this.startTimestamp == 0 || this.startTimestamp > _result.getStartTimestamp()) { this.startTimestamp = _result.getStartTimestamp(); } if (this.stopTimestamp == 0 || this.stopTimestamp < _result.getStopTimestamp()) { this.stopTimestamp = _result.getStopTimestamp(); } for (GroupbyKeyValue keyValue : _result.getKeyValues()) { update(keyValue); } } }
public AggregateResult result() { List<GroupbyKeyValue> mergedKeyValues = new ArrayList<GroupbyKeyValue>(); for (Map.Entry<GroupbyKey, List<Function>> entry : this.groupedFuncs.entrySet()) { GroupbyValue value = new GroupbyValue(this.numFuncs); for (Function func : entry.getValue()) { double _result = func.result(); int _count = func.count(); value.add(_result); value.addMeta(_count); } mergedKeyValues.add(new GroupbyKeyValue(entry.getKey(), value)); } final long _stop = System.currentTimeMillis(); if (this.getRegionCounter() > 0) { LOG.info(String.format("result = %d rows, startTime = %d, endTime = %d, source = %d rows, regions = %d, , spend = %d ms", mergedKeyValues.size(), this.startTimestamp, this.stopTimestamp, this.getKVCounter(), this.getRegionCounter(), (_stop - _start))); } else { LOG.info(String.format("result = %d rows, startTime = %d, endTime = %d, source = %d rows, spend = %d ms", mergedKeyValues.size(), this.startTimestamp, this.stopTimestamp, this.getKVCounter(), (_stop - _start))); } AggregateResult result = new AggregateResult(); result.setKeyValues(mergedKeyValues); result.setStartTimestamp(this.startTimestamp); result.setStopTimestamp(this.stopTimestamp); return result; }
@Test public void testGroupTimeSeriesAggMaxClient() { try { List<GroupbyKeyValue> result = client.aggregate(table, ed, scan, Arrays.asList("cluster", "datacenter"), Arrays.asList(AggregateFunctionType.max), Arrays.asList("field2"), true, startTime, System.currentTimeMillis(), 10).getKeyValues(); if (LOG.isDebugEnabled()) LOG.debug("MAX"); logGroupbyKeyValue(result); Assert.assertNotNull(result); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); } }
public AggregateResult result(){ List<GroupbyKeyValue> mergedKeyValues = new ArrayList<GroupbyKeyValue>(); for(Map.Entry<GroupbyKey,List<Function>> entry:this.groupedFuncs.entrySet()){ GroupbyValue value = new GroupbyValue(this.numFuncs); for(Function func:entry.getValue()){ double _result = func.result(); int _count = func.count(); value.add(_result); value.addMeta(_count); } mergedKeyValues.add(new GroupbyKeyValue(entry.getKey(),value)); } final long _stop = System.currentTimeMillis(); if(this.getRegionCounter() > 0) { LOG.info(String.format("result = %d rows, startTime = %d, endTime = %d, source = %d rows, regions = %d, , spend = %d ms", mergedKeyValues.size(),this.startTimestamp,this.stopTimestamp, this.getKVCounter(), this.getRegionCounter(),(_stop - _start))); }else{ LOG.info(String.format("result = %d rows, startTime = %d, endTime = %d, source = %d rows, spend = %d ms", mergedKeyValues.size(),this.startTimestamp,this.stopTimestamp,this.getKVCounter(), (_stop - _start))); } AggregateResult result = new AggregateResult(); result.setKeyValues(mergedKeyValues); result.setStartTimestamp(this.startTimestamp); result.setStopTimestamp(this.stopTimestamp); return result; }