当前位置: 首页 > 知识库问答 >
问题:

在使用Datastax API(使用新的二进制协议)时在Cassandra中创建列族或表

封景曜
2023-03-14

我已经开始使用Cassandra数据库。我计划使用Datastax API来更新/读取Cassandra数据库。我对这个Datastax API(使用新的二进制协议)完全陌生,我找不到很多文档,其中有一些适当的示例。

当我使用Netflix客户端(Astyanax客户端)使用Cassandra CLI时,我创建了这样的列族-

create column family profile
with key_validation_class = 'UTF8Type'
and comparator = 'UTF8Type'
and default_validation_class = 'UTF8Type'
and column_metadata = [
  {column_name : crd, validation_class : 'DateType'}
  {column_name : lmd, validation_class : 'DateType'}
  {column_name : account, validation_class : 'UTF8Type'}
  {column_name : advertising, validation_class : 'UTF8Type'}
  {column_name : behavior, validation_class : 'UTF8Type'}
  {column_name : info, validation_class : 'UTF8Type'}
  ];

现在,我试图使用datastasapi做同样的事情。那么,要开始使用datastasapi,我需要以上面提到的不同方式创建列族吗?或者,每当我尝试使用datastasapi将数据插入Cassandra数据库时,上面的专栏familiy都会工作得很好。

如果上述列系列不起作用,那么-

首先,我创建了如下KEYSPACE-

创建密钥空间用户,strategy_class = '简单策略' 和 strategy_options:replication_factor = '1';

现在我很困惑如何创建表?我不确定哪种方法是正确的?

我应该这样创作吗?

< code >创建表概要(id varchar,account varchar,advertising varchar,behavior varchar,info varchar,PRIMARY KEY(id));

还是我应该这样创作?

创建列家族配置文件(id varchar、帐户varchar、广告varchar、行为varchar、info varchar、PRIMARY KEY(id));

以及如何添加 -

crd as DateType
lmd as DateType

在上面的表或列族中?

任何帮助都将不胜感激。

共有3个答案

宗政才俊
2023-03-14

@neel4soft - 有了卡桑德拉,事情就简单了。因此,为了让人们更容易,正在进行一个稳定的重命名过程,以使新手更容易从SQL过渡到CQL。然而,CQL 不应该被认为是 SQL 的亲戚,而应该被认为是它母亲身边的第三个堂亲,换句话说,它不是近亲。因此,将其与MySQL进行比较是其功能的不当形象。

李开宇
2023-03-14

在cassandra中,keyspace或数据库是相同的,就像wise columnfamily和table一样。

Cassandra在语法上更像Mysql,支持hql(类似于sql

在 cassandra 中可以像这样创建一个表:

CREATE TABLE users (
user_name varchar,
password varchar,
gender varchar,
session_token varchar,
state varchar,
birth_year bigint,
PRIMARY KEY (user_name));

更多信息在这里 : 卡桑德拉教程

盖嘉庆
2023-03-14

无论您使用关键字“表”还是“列家庭”,两者都是相同的(同义词)。我猜关键字表是用CQL3引入的。因此,您可以在语句中使用任何一个。

第二个问题,添加DateType,你应该使用时间戳。

CREATE COLUMNFAMILY sample (rowkey text, ts timestamp, PRIMARY KEY(rowkey));

INSERT INTO sample (rowkey, ts ) VALUES ( '1','1366354711797');
// ts value is basically the System.currentTimeMillis(), I mean a long value
 类似资料:
  • 我试图在Cassandra CLI版本1.1.6中创建一个列族,我不确定如何将主键指定为MovieID。

  • 问题内容: 我想使用一种接受通用输入并返回通用值的方法来创建协议。 到目前为止,这是我尝试过的方法,但是会产生语法错误。 使用未声明的标识符T。 我究竟做错了什么? 问题答案: 协议略有不同。查看Apple文档中的“关联类型” 。 这就是您在示例中使用它的方式

  • 我在 RabbitMQ 中创建新队列时遇到了一些问题。我只创建一个使用者客户端,该客户端将使用来自另一个微服务的消息。 这是我到目前为止所做的。 应用程序属性: 配置类: 和侦听器类: 当我运行这个程序时,我有一条ACCESS_REFUSED消息,但我不知道为什么。我错过了什么吗?? 谢谢

  • 现在,我想在一个函数中使用这个,如下所示- 然后使用此函数在我的DataFrame中创建一个新列 总之,我希望我的列“new_col”是一个类型数组,其值为[[x,x,x]] 我得到以下错误。我在这里做错了什么? 原因:java.lang.UnsupportedOperationException:不支持org.apache.spark.sql.Column类型的模式

  • 我在新的Android项目中使用JCIFS。不知何故,我决定使用URL类来泛化文件路径(以便以后可以添加更多协议)。我所做的如下 然后抛出java.net.MalformedURLExcure异常。 参考JCIFS FAQ可以发现,在使用该类之前,我必须注册协议。然而,我真的不知道如何在Android中做到这一点。我认为这个库已经做到了,但在Android上没有。 那么我该怎么做呢?