似乎有两种方法可以将指标推向石墨/碳,
根据文档http://graphite.readthedocs.org/en/1.0/feeding-carbon.html pickle更好,因为它允许在一次调用中批量处理多个指标.
但是,可以通过使用换行符分离指标来将指标批量处理到线路接收器.例如:
echo -e "local.random.diceroll4 40 `date +%s`\nlocal.random.diceroll5 400 `date +%s`" | nc localhost 2003
Run Code Online (Sandbox Code Playgroud)
因此,鉴于酸洗/非酸洗指标的额外开销,何时以及为什么pickle接收器比线路接收器更好?
我有一个HBase(v0.94.7)表,其中包含一个列族,并且随着时间的推移会添加列.这些列被命名为它们创建的时间戳,因此除非我查询该行,否则我不知道它具有的所有列.
现在给定一行,我想原子地删除此列族的所有现有列,并添加一组新的列和值.
所以我想到使用HBase的RowMutations,如:
RowMutations mutations = new RowMutations(row);
//delete the column family
Delete delete = new Delete(row);
delete.deleteFamily(cf);
//add new columns
Put put = new Put(row);
put.add(cf, col1, v1);
put.add(cf, col2, v2);
//delete column family and add new columns to same family
mutations.add(delete);
mutations.add(put);
table.mutateRow(mutations);
Run Code Online (Sandbox Code Playgroud)
但是这段代码最终做的只是删除列族,它不会添加新列.这种行为有望吗?
如果是这样,那么我如何实现我的目标,即用一组新的列原子替换列族的所有列?
以下是相同的测试用例:
import junit.framework.Assert;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableExistsException;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import java.util.NavigableMap;
public class …Run Code Online (Sandbox Code Playgroud) 我有一个递归对象 Node.java,我可以使用 Jackson 对其进行序列化,但无法将其反序列化回来。
节点.java
public class Node {
private final String id;
private final Map<String, Node> embeddedNodes;
public Node(String id, Map<String, Node> embeddedNodes) {
this.id = id;
this.embeddedNodes = embeddedNodes;
}
public String getId() {
return id;
}
public Map<String, Node> getEmbeddedNodes() {
return embeddedNodes;
}
}
Run Code Online (Sandbox Code Playgroud)
杰克逊序列化器
public static class NodeSerializer extends JsonSerializer<Node> {
@Override
public void serialize(Node node, JsonGenerator jgen, SerializerProvider provider) throws IOException{
jgen.writeStartObject();
jgen.writeStringField("id", node.getId());
Map<String, Node> embeddedNodesMap = node.getEmbeddedNodes();
if (!embeddedNodesMap.isEmpty()) {
jgen.writeObjectFieldStart("embeddedNodes");
for …Run Code Online (Sandbox Code Playgroud)