从erlang插入cassandra

时间:2011-06-16 13:28:49

标签: erlang cassandra thrift

我试图从Erlang R14B02(通过节俭0.6.1)向cassandra 0.7.6插入一些东西

我正在做以下事情:

  1. 阅读记录定义

    RR(cassandra_types)。

  2. 连接到cassandra

    {ok,C} = thrift_client_util:new(“localhost”,9160,cassandra_thrift,[{strict_read,false},{strict_write,false},{framed,true}])。

  3. 尝试插入一个值(timestamp = 1,2 = Quorum)

    Reply1 = thrift_client:call(C,'insert',[“existing_keyspace”,“new_key”,#columnPath {column_family =“existing_column_family”,column =“existing_column”},“new_value”,1,2])。

  4. 但是nr3给了我一个bad_args错误(1和2完美地工作)。什么是正确的论点?

2 个答案:

答案 0 :(得分:3)

不支持的语言有哪些API信息主要在Cassandra Thrift API documentation

在Cassandra 0.7中,您不为大多数操作提供键空间,因此insert只需[Key, ColumnPath, Column, ConsistencyLevel]。在尝试插入之前,您需要调用set_keyspace。 erlang中的插入是

Reply1 = thrift_client:call(C, 'insert',
                            [SomeKey,
                             #columnPath{column_family = "existing_column_family",
                                         column = "existing_column"},
                             #column{name="existing_column",
                                     value="new_value",timestamp=1},
                             ?cassandra_ConsistencyLevel_QUORUM]).

您的示例缺少我认为的插入行键。

顺便说一句,请确保始终更新C的值 - 它会在每次thrift_client调用后更改。

?cassandra_ConsistencyLevel_QUORUM从内存中是2。

答案 1 :(得分:0)

这可能会有所帮助,尽管没有特定于erlang的代码:http://wiki.apache.org/cassandra/ThriftExamples