Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra:如何读取cqlsh中的无模式列,或者为什么不可能?_Cassandra_Cql_Cqlsh_Cassandra Cli - Fatal编程技术网

Cassandra:如何读取cqlsh中的无模式列,或者为什么不可能?

Cassandra:如何读取cqlsh中的无模式列,或者为什么不可能?,cassandra,cql,cqlsh,cassandra-cli,Cassandra,Cql,Cqlsh,Cassandra Cli,我们使用Cassandra作为数据库,其中大多数表都有模式(并通过CQL创建),但也有一些旧表是通过Thrift API定义的,即使用紧凑存储并具有相当多的动态列 典型的例子是Accounts表,其中在用户数据中插入了许多标记、标志等。 代码可以轻松地获取、解码和操作这些动态列的Blob。例如,通过cassandra cli,您可以将一些帐户列为: RowKey: bfc4c12b-abcd-defg-90ca-0a56870596e1 => (name=country, value=US

我们使用Cassandra作为数据库,其中大多数表都有模式(并通过CQL创建),但也有一些旧表是通过Thrift API定义的,即使用紧凑存储并具有相当多的动态列

典型的例子是
Accounts
表,其中在用户数据中插入了许多标记、标志等。 代码可以轻松地获取、解码和操作这些动态列的Blob。例如,通过cassandra cli,您可以将一些帐户列为:

RowKey: bfc4c12b-abcd-defg-90ca-0a56870596e1
=> (name=country, value=US, timestamp=1384489319659000)
=> (name=email, value=someperson@goodserver.org, timestamp=1384489425826000)
=> (name=ourCode, value=12345, timestamp=1384489319550005)
=> (name=flag_ab_notice_twoweeks, value=text, timestamp=1385943698049000)
=> (name=flag_client, value=4d6f7a696c6c612f352e3020286950686f6e653b20435055206950686f6e65204f5320375f305f33206c696b65204d6163204f53205829204170706c655765624b69742f3533372e35312e3120284b48544d4c2c206c696b65204765636b6f29204d6f62696c652f313142353131205468696e674c696e6b2f312e372e312e313233, timestamp=1384489319637000)
=> (name=flag_orgindustry, value=, timestamp=1435153936346000)
=> (name=flag_orgsize, value=736d616c6c, timestamp=1435153936458000)
=> (name=flag_orgtype, value=5363686f6f6c, timestamp=1435153936450000)
=> (name=flag_registeredWith, value=email, timestamp=1384489319617000)
=> (name=flag_registrationFunnel, value=api, timestamp=1384489319601000)
=> (name=flag_statsEmails, value=true, timestamp=1384489322779000)
=> (name=lastTOSApproved, value=0000014259fe7ced, timestamp=1384489319661000)
=> (name=name, value=John, timestamp=1384489425826001)
=> (name=password, value=12345678, timestamp=1384489425826002)
=> (name=primaryId, value=bfc4c12b-abcd-defg-90ca-0a56870596e1, timestamp=1384489319550001)
=> (name=roles, value=user, timestamp=1384489319550002)
=> (name=salt, value=123456789, timestamp=1384489425826003)
当我通过CQL查看相同的数据时,我可以看到一些列(用模式定义的列),但看不到其他列(例如,在我的例子中,列“salt”最初是由Java客户端使用Hector驱动程序和
HFactory.createColumn(“salt”,byteArrayOfAUtf8StringValue)创建的)
。好吧,cqlsh无法显示动态节俭创建的列名,例如at,但a我仍然无法理解某些内容

问题

  • 为什么casandra cli可以显示此类动态销售的名称?名称“salt”存储在哪里
  • 为什么cqlsh不能使用相同的数据源来显示单元格标题/值(至少以非解码方式)
  • 或者,我可以指示cqlsh向我显示给定动态单元格的值吗?可能类似于“accounts”中的“SELECT DECODE_dynamic_COLUMN”(“salt”,“String”),其中…?这将大大简化维护,因为我不必每次需要检查某些内容时都编写Java包装器
  • 致以最良好的祝愿, 阿泰姆