0

Cassandra Gem を使用して Cassandra からデータを読み取る際に問題が発生しています....私のコードは次のとおりです。

require 'cassandra'
@states = {}
@client = Cassandra.new('Logs', "10.1.1.11:9160")
@client.get_range(:PlaybackStates) do |ckey,bb|
    @states[bb["State"].to_sym] = key
end
pp @states

私はこれを得る:

{:DrmInit=>"\x00\x00\x00(",
 :Buffering=>"\x00\x00\x00x",
 :PreBuffering=>"\x00\x00\x002",
 :Debug=>"\x00\x00\x016",
 :FullScreen=>"\x00\x00\x01\x90",
 :Seek=>"\x00\x00\x00\x96",
 :LoadManifest=>"\x00\x00\x00\x14",
 :Play=>"\x00\x00\x00d"}

これは私が期待したものです:

{:DrmInit=>[40],
 :Buffering=>[120],
 :PreBuffering=>[50],
 :Debug=>[310],
 :FullScreen=>[400],
 :Seek=>[150],
 :LoadManifest=>[20],
 :Play=>[100]}

コードでこれを行うことで、この結果を得ることができます。

require 'cassandra'
@states = {}
@client = Cassandra.new('Logs', "10.1.1.11:9160")
@client.get_range(:PlaybackStates) do |ckey,bb|
    @states[bb["State"].to_sym] = ckey.unpack("N*") # unpacking the string with N*
end
pp @states

また、TimeStamp および Date フィールドのバイナリ表現も取得します......何か間違っていますか?? データ型が GEM によって変換されないのはなぜですか??

4

1 に答える 1

1

Twitter の cassandra gem は、現時点では UTF8 以外のデータ型を認識しません。その結果、ネイティブの整数やその他のデータ型を文字列として解釈します。

代わりに cassandra-cql gem を使用することをお勧めします。ネイティブの Cassandra データ型をネイティブの Ruby 型にマッピングするための完全なサポートを提供します。

https://github.com/kreynolds/cassandra-cql

http://rubygems.org/gems/cassandra-cql

于 2013-01-29T22:42:29.883 に答える