storm-cassandra


通过一个动态可配置的backtype.storm.Bolt实现将Storm和Cassandra集成在一起,在类Class中指定column family, row key, and column name/values,则Bolt将StormTuple对象写入Cassandra cluster的Column Family。

具体操作:

Basic Usage

CassandraBolt

TridentCassandraLookupFunction

TridentCassandraWriteFunction 

均以key/map形式调用Storm topology配置中为Cassandra指定的hostname、port、keyspace,以允许topology中的多个实例可以连接同一个Cassandra实例。key在构造函数中指定以表示要使用的map:

    Map<String, Object> cassandraConfig = new HashMap<String, Object>();
    cassandraConfig.put(StormCassandraConstants.CASSANDRA_HOST, "localhost:9160");
    cassandraConfig.put(StormCassandraConstants.CASSANDRA_KEYSPACE, "testKeyspace");
    Config config = new Config();
    config.put("CassandraLocal", cassandraConfig);

CassandraBolt 的构造器将column family name和 row key field的值作为参数:

    IRichBolt cassandraBolt = new CassandraBolt("columnFamily", "rowKey");

上述创建的CassandraBolt写入名为"columnFamily" 的column family,并且查询/使用backtype.storm.tuple.Tuple对象中的"rowKey"作为 Cassandra row key。backtype.storm.Tuple接受的每一field,CassandraBolt将写入name/value对。比如,上述的构造器如下:

    {rowKey: 12345, field1: "foo", field2: "bar}

则Cassandra row如下 ( from cassandra-cli):

    RowKey: 12345
    => (column=field1, value=foo, timestamp=1321938505071001)
    => (column=field2, value=bar, timestamp=1321938505072000)

Cassandra Write Function

如果Function不会emit任何数据,则Storm Trident 过滤掉original Tuple。在写入Cassandra之后,TridentCassandraWriteFunction则emit一个static Object值以进行其他处理,此主要使Tuple继续,而static value或由构造器或调用setValueToEmitAfterWrite方法设置,而如果设置为NULL则使得此Function不能emit而且Storm将过滤掉此Tuple。默认的行为是不emit,如果Function emit 一个值,不要忘记 声明输出域。

Cassandra Counter Columns

The Counter Column与上相似,必须具体化rowKey 和value来具体化计数。所有其他field将按此计数累加。

    CassandraCounterBatchingBolt logPersistenceBolt = new CassandraCounterBatchingBolt(
            "columnFamily", "RowKeyField", "IncrementAmountField" );

上述创建的bolt 写入名为"columnFamily"的 column family并用名为 "RowKeyField"指定需要接受的Tuple。 此Tuple的其他field则隐含增加IncrementAmountField指定的值。

给定如下Tuple:

    {rowKey: 12345, IncrementAmount: 1L, IncrementColumn: 'SomeCounter'}

将为 "SomeCounter" 增加 1L。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值