public InternalLog buildObject(byte[] row, long timestamp, Map<String, byte[]> allQualifierValues) { InternalLog alertDetail = new InternalLog(); String myRow = EagleBase64Wrapper.encodeByteArray2URLSafeString(row); alertDetail.setEncodedRowkey(myRow); alertDetail.setPrefix(schema.getPrefix()); alertDetail.setSearchTags(searchTags); alertDetail.setTimestamp(timestamp); Map<String, byte[]> logQualifierValues = new HashMap<String, byte[]>(); Map<String, String> logTags = new HashMap<String, String>(); for (Map.Entry<String, byte[]> entry : allQualifierValues.entrySet()) { if (schema.isTag(entry.getKey())) { if (entry.getValue() != null) { logTags.put(entry.getKey(), new String(entry.getValue())); } } else { logQualifierValues.put(entry.getKey(), entry.getValue()); } } alertDetail.setQualifierValues(logQualifierValues); alertDetail.setTags(logTags); return alertDetail; } }
public static TaggedLogAPIEntity buildEntity(InternalLog log, EntityDefinition entityDef) throws Exception { Map<String, byte[]> qualifierValues = log.getQualifierValues(); TaggedLogAPIEntity entity = ENTITY_SERDESER.readValue(qualifierValues, entityDef); if (entity.getTags() == null && log.getTags() != null) { entity.setTags(log.getTags()); } entity.setExp(log.getExtraValues()); entity.setTimestamp(log.getTimestamp()); entity.setEncodedRowkey(log.getEncodedRowkey()); entity.setPrefix(log.getPrefix()); return entity; }
/** * build rowkey from InternalLog object * * @param log internal log entity to write * @return the rowkey of the entity */ public static byte[] buildRowkey(InternalLog log) { final String[] partitions = log.getPartitions(); final Map<String, String> tags = log.getTags(); final SortedMap<Integer, Integer> tagHashMap = generateSortedTagMap(partitions, tags); // reverse timestamp long ts = Long.MAX_VALUE - log.getTimestamp(); List<Integer> partitionHashValues = new ArrayList<Integer>(); if (partitions != null) { for (String partition : partitions) { final String tagValue = tags.get(partition); if (tagValue != null) { partitionHashValues.add(tagValue.hashCode()); } else { partitionHashValues.add(EMPTY_PARTITION_DEFAULT_HASH_CODE); } } } return buildRowkey(log.getPrefix().hashCode(), partitionHashValues, ts, tagHashMap); }
protected void populateColumnValues(Put p, InternalLog log){ Map<String, byte[]> qualifierValues = log.getQualifierValues(); // iterate all qualifierValues for(Map.Entry<String, byte[]> entry : qualifierValues.entrySet()){ p.add(columnFamily.getBytes(), entry.getKey().getBytes(), entry.getValue()); } Map<String, String> tags = log.getTags(); // iterate all tags, each tag will be stored as a column qualifier if(tags != null){ for(Map.Entry<String, String> entry : tags.entrySet()){ // TODO need a consistent handling of null values if(entry.getValue() != null) p.add(columnFamily.getBytes(), entry.getKey().getBytes(), entry.getValue().getBytes()); } } }
public static InternalLog convertToInternalLog(TaggedLogAPIEntity entity, EntityDefinition entityDef) throws Exception { final InternalLog log = new InternalLog(); final Map<String, String> inputTags = entity.getTags(); final Map<String, String> tags = new TreeMap<String, String>(); log.setTags(tags); if (entityDef.isTimeSeries()) { log.setTimestamp(entity.getTimestamp()); } else { log.setTimestamp(EntityConstants.FIXED_WRITE_TIMESTAMP); // set timestamp to MAX, then actually stored 0 log.setPrefix(entity.getPrefix()); } else { log.setPrefix(entityDef.getPrefix()); log.setPartitions(entityDef.getPartitions()); EntitySerDeserializer des = new EntitySerDeserializer(); log.setQualifierValues(des.writeValue(entity, entityDef)); indexRowkeys.add(indexRowkey); log.setIndexRowkeys(indexRowkeys);
InternalLog log = new InternalLog(); String myRow = EagleBase64Wrapper.encodeByteArray2URLSafeString(row); log.setEncodedRowkey(myRow); log.setPrefix(ed.getPrefix()); log.setTimestamp(timestamp); log.setQualifierValues(logQualifierValues); log.setTags(logTags); log.setExtraValues(extra); return log;
public List<String> write(List<? extends TaggedLogAPIEntity> entities) throws IOException { HBaseLogWriter writer = new HBaseLogWriter(table, columnFamily); List<String> rowkeys = new ArrayList<String>(); try { writer.open(); for (TaggedLogAPIEntity entity : entities) { InternalLog log = new InternalLog(); Map<String, String> inputTags = entity.getTags(); Map<String, String> tags = new TreeMap<String, String>(); for (Map.Entry<String, String> entry : inputTags.entrySet()) { tags.put(entry.getKey(), entry.getValue()); } log.setTags(tags); log.setTimestamp(entity.getTimestamp()); log.setPrefix(entity.getPrefix()); log.setQualifierValues(mapper.createQualifierValues(entity)); byte[] rowkey = writer.write(log); rowkeys.add(EagleBase64Wrapper.encodeByteArray2URLSafeString(rowkey)); } } catch (IOException ioe) { LOG.error("Fail writing tagged log", ioe); throw ioe; } finally { writer.close(); } return rowkeys; }
private InternalLog buildLog(Result result) { final InternalLog log = new InternalLog(); final byte[] rowkey = result.getRow(); log.setEncodedRowkey(EagleBase64Wrapper.encodeByteArray2URLSafeString(rowkey)); long timestamp = ByteUtil.bytesToLong(rowkey, 4); timestamp = Long.MAX_VALUE - timestamp; log.setTimestamp(timestamp); Map<String, byte[]> qualifierValues = new HashMap<String, byte[]>(); log.setQualifierValues(qualifierValues); NavigableMap<byte[], byte[]> map = result.getFamilyMap(this.columnFamily.getBytes()); if (map == null) { throw new NoSuchRowException(EagleBase64Wrapper.encodeByteArray2URLSafeString(rowkey)); } for (Map.Entry<byte[], byte[]> entry : map.entrySet()) { byte[] qualifier = entry.getKey(); byte[] value = entry.getValue(); qualifierValues.put(new String(qualifier), value); } return log; }
@Test public void testTimeSeriesAPIEntity() { InternalLog internalLog = new InternalLog(); Map<String, byte[]> map = new HashMap<String, byte[]>(); TestTimeSeriesAPIEntity apiEntity = new TestTimeSeriesAPIEntity(); map.put("datacenter", new String("datacenter4ut").getBytes()); internalLog.setQualifierValues(map); internalLog.setTimestamp(System.currentTimeMillis());
public void updateByRowkey(List<? extends TaggedLogAPIEntity> entities) throws IOException { HBaseLogWriter writer = new HBaseLogWriter(table, columnFamily); try { writer.open(); for (TaggedLogAPIEntity entity : entities) { byte[] rowkey = EagleBase64Wrapper.decode(entity.getEncodedRowkey()); InternalLog log = new InternalLog(); log.setQualifierValues(mapper.createQualifierValues(entity)); writer.updateByRowkey(rowkey, log); } } catch (IOException ioe) { LOG.error("Fail writing tagged log", ioe); throw ioe; } finally { writer.close(); } } }
entity.setFieldNameValueMap(fieldNameValueMap); Map<String, byte[]> qualifierValues = log.getQualifierValues(); for(Map.Entry<String, byte[]> qualifier : qualifierValues.entrySet()){ if(qualifier.getValue() != null){
@Override public void updateByRowkey(byte[] rowkey, InternalLog log) throws IOException { Put p = new Put(rowkey); populateColumnValues(p, log); tbl.put(p); final List<byte[]> indexRowkeys = log.getIndexRowkeys(); if (indexRowkeys != null) { writeIndexes(rowkey, indexRowkeys); } }
public static byte[] getRowkey(InternalLog log) { byte[] rowkey = null; if (log.getEncodedRowkey() != null && !(log.getEncodedRowkey().isEmpty())) { rowkey = EagleBase64Wrapper.decode(log.getEncodedRowkey()); } else { rowkey = RowkeyBuilder.buildRowkey(log); } return rowkey; }
public static InternalLog convertToInternalLog(TaggedLogAPIEntity entity, EntityDefinition entityDef) throws Exception { final InternalLog log = new InternalLog(); final Map<String, String> inputTags = entity.getTags(); final Map<String, String> tags = new TreeMap<String, String>(); log.setTags(tags); if(entityDef.isTimeSeries()){ log.setTimestamp(entity.getTimestamp()); }else{ log.setTimestamp(EntityConstants.FIXED_WRITE_TIMESTAMP); // set timestamp to MAX, then actually stored 0 log.setPrefix(entity.getPrefix()); }else{ log.setPrefix(entityDef.getPrefix()); log.setPartitions(entityDef.getPartitions()); EntitySerDeserializer des = new EntitySerDeserializer(); log.setQualifierValues(des.writeValue(entity, entityDef)); indexRowkeys.add(indexRowkey); log.setIndexRowkeys(indexRowkeys);
InternalLog log = new InternalLog(); String myRow = EagleBase64Wrapper.encodeByteArray2URLSafeString(row); log.setEncodedRowkey(myRow); log.setPrefix(ed.getPrefix()); log.setTimestamp(timestamp); log.setQualifierValues(logQualifierValues); log.setTags(logTags); log.setExtraValues(extra); return log;
public List<String> write(List<? extends TaggedLogAPIEntity> entities) throws IOException{ HBaseLogWriter writer = new HBaseLogWriter(table, columnFamily); List<String> rowkeys = new ArrayList<String>(); try{ writer.open(); for(TaggedLogAPIEntity entity : entities){ InternalLog log = new InternalLog(); Map<String, String> inputTags = entity.getTags(); Map<String, String> tags = new TreeMap<String, String>(); for(Map.Entry<String, String> entry : inputTags.entrySet()){ tags.put(entry.getKey(), entry.getValue()); } log.setTags(tags); log.setTimestamp(entity.getTimestamp()); log.setPrefix(entity.getPrefix()); log.setQualifierValues(mapper.createQualifierValues(entity)); byte[] rowkey = writer.write(log); rowkeys.add(EagleBase64Wrapper.encodeByteArray2URLSafeString(rowkey)); } }catch(IOException ioe){ LOG.error("Fail writing tagged log", ioe); throw ioe; }finally{ writer.close(); } return rowkeys; }
private InternalLog buildLog(Result result) { final InternalLog log = new InternalLog(); final byte[] rowkey = result.getRow(); log.setEncodedRowkey(EagleBase64Wrapper.encodeByteArray2URLSafeString(rowkey)); long timestamp = ByteUtil.bytesToLong(rowkey, 4); timestamp = Long.MAX_VALUE - timestamp; log.setTimestamp(timestamp); Map<String, byte[]> qualifierValues = new HashMap<String, byte[]>(); log.setQualifierValues(qualifierValues); NavigableMap<byte[], byte[]> map = result.getFamilyMap(this.columnFamily.getBytes()); if(map == null){ throw new NoSuchRowException(EagleBase64Wrapper.encodeByteArray2URLSafeString(rowkey)); } for(Map.Entry<byte[], byte[]> entry : map.entrySet()){ byte[] qualifier = entry.getKey(); byte[] value = entry.getValue(); qualifierValues.put(new String(qualifier), value); } return log; }
public void updateByRowkey(List<? extends TaggedLogAPIEntity> entities) throws IOException{ HBaseLogWriter writer = new HBaseLogWriter(table, columnFamily); try{ writer.open(); for(TaggedLogAPIEntity entity : entities){ byte[] rowkey = EagleBase64Wrapper.decode(entity.getEncodedRowkey()); InternalLog log = new InternalLog(); log.setQualifierValues(mapper.createQualifierValues(entity)); writer.updateByRowkey(rowkey, log); } }catch(IOException ioe){ LOG.error("Fail writing tagged log", ioe); throw ioe; }finally{ writer.close(); } } }
protected void populateColumnValues(Put p, InternalLog log) { Map<String, byte[]> qualifierValues = log.getQualifierValues(); // iterate all qualifierValues for (Map.Entry<String, byte[]> entry : qualifierValues.entrySet()) { p.add(columnFamily.getBytes(), entry.getKey().getBytes(), entry.getValue()); } Map<String, String> tags = log.getTags(); // iterate all tags, each tag will be stored as a column qualifier if (tags != null) { for (Map.Entry<String, String> entry : tags.entrySet()) { // TODO need a consistent handling of null values if (entry.getValue() != null) { p.add(columnFamily.getBytes(), entry.getKey().getBytes(), entry.getValue().getBytes()); } } } }
entity.setFieldNameValueMap(fieldNameValueMap); Map<String, byte[]> qualifierValues = log.getQualifierValues(); for(Map.Entry<String, byte[]> qualifier : qualifierValues.entrySet()){ if(qualifier.getValue() != null){