在C#中查询Cassandra表格,没有显示结果
我正在尝试使用 的控制台运行查询形式的本地计算机 select state from table limit 10 ALLOW FILTERING; 它给了我输出. 但是,当我尝试形成控制台应用程序时,我没有得到任何结果. 以下是代码 //Create a cluster instance using 3 cassandra nodes. var cluster = Cluster.Builder() .AddContactPoints("xx.xx.xx.xx") .Build(); var session = cluster.Connect("keyspace"); var rs = session.Execute("select state from table limit 10 ALLOW FILTERING"); foreach (var row in rs) { var value =
10 2024-04-26
编程技术问答社区
将 Titan 连接到 Solr
我试图将泰坦与索尔联系起来.我正在使用的属性文件是titan-cassandra-solr.properties: index.search.backend=solr index.search.solr.mode=cloud index.search.solr.zookeeper-url=localhost:2181 我已经配置了我的泰坦核心为: 名称: titan 实例: /opt/solr-titan/titan 数据: /opt/solr-titan/data 内部/opt/solr-titan/titan我有一个conf目录,其中包含我从titandb/conf/solr中复制的所有文件. 当我使用gremlin.sh并尝试: gremlin> graph = TitanFactory.open("conf/titan-cassandra-solr.properties") ==>standardtitangraph[cassandrathrif
26 2024-04-23
编程技术问答社区
在Cassandra中使用c#驱动向列表集合添加UDT元素的正确方法是什么?
我有一个UDT列表,类似: create table MyTable { ... stuff list>, ... } 在我的客户端代码中,我想将一个元素附加到"东西"中.理想情况下,我想做以下(或类似的事情): this.Mapper("SET stuff = stuff + [?] WHERE id = ?", mytype, id); 不幸的是,由于以下错误而失败: Invalid list literal for stuff: bind variables are not supported inside collection literals 我可以通过将mytype转换为JSON来使它起作用,例如: var stuffAsJson = stuff.ToJson(); var update = string.Format("SET stuff = stuff + [{0}] WHER
8 2024-04-22
编程技术问答社区
用CQL 3创建复合COLUMNS(非键)。
本文讨论可以使用CQL 3来创建复合列的方法在Cassandra 1.1中.他们只是想法.没有什么是官方的,并且DataStax文档不涵盖此内容(仅复合键). 据我了解,复合列是许多列,只有一个值. 如何使用CQL创建它们? 编辑 我将使用C#连接到Cassandra. CQL看起来很简单,这就是我要使用它的原因. 解决方案 我认为,您有几个概念困惑.这很可能是DataStax文档的错;如果您有更好的建议在您有更好的图片之后提出更清楚的建议,我将很高兴将其发送. dataStax文档中的"复合密钥"的内容 实际上在谈论复合卡桑德拉列.混淆的原因是CQL 3中的行不会直接映射到存储引擎行(使用旧货接口时使用的内容).在CQL表的上下文中的"复合密钥"仅表示由多个列组成的主键,该列是由存储层处的复合列实现的. 本文是最好的之一关于映射如何发生以及为什么CQL模型通常更容易考虑的解释. 使用这种使用,第一个CQL列成为存储引擎分区密钥.
10 2024-04-22
编程技术问答社区
获取插入的行的ID cassandra .Net
我正在使用DataStax C#驱动程序将行插入Cassandra数据库中,我的示例代码看起来像这样: var cluster = Cluster.Builder() .AddContactPoints("localhost") .Build(); using(cluster) { var connection = cluster.Connect(); connection.ChangeKeyspace("development"); var simple = connection.Prepare(@"INSERT INTO test(id,customer,content,created_at,line_ids) VALUES (uuid(), 'test customer', ?,'2014-10-24',?);"); var cmd = simple.Bind("content",new HashSet{ Guid.Ne
8 2024-04-22
编程技术问答社区
如何用C#和Cassandra连接
我是.NET C#和Cassandra的新手,我无法彼此连接.我已经搜索了很多,但还没有找到清楚的解释. 我已经下载了Cassandra使用Python 2.7安装了它,我可以运行服务器,并且可以运行CQLSH.然后,我打开Visual Studio,创建一个新的.NET核心项目,然后安装Cassandra C#驱动程序. 仅此而已,我不知道如何创建一个表格,从C#到Cassandra. 任何人都可以简单地说明如何创建一个简单的键空间,带有列的表来输出代码,以便我可以看到它的工作原理? 解决方案 它已经五年了,但是我写了一篇有关如何使用卡桑德拉作为ASP.NET MVC项目的后端的文章:我的文章的git回购也仍然存在: https://github.com/github.com/aploetz/船体 它的肉将在private Cluster Connect() { string user = getAppSetting("cassandraUser");
10 2024-04-16
编程技术问答社区
CQL3 每一行都有自己的模式
我想在.NET应用程序中使用Cassandra.我的目的是将一些数据存储在列家族中,但是每一数据都有不同的模式. 示例(一个非常简单的示例)我想拥有一个"玩具"列家族来存储以下对象(请注意,除了ID属性以外,它们如何具有非常不同的属性) 玩具对象1 {" id":" 1", "名称":"汽车", " number_of_doors":4, "喜欢":3} 玩具对象2 {" id":" 2", " type":"平面", " flave_range":" 100m"} 玩具对象3 {" id":" 3", "类别":"火车", " number_of_carriages":10} 从我最初的理解和使用dataStax csharp驱动程序的使用中,我必须总是更改表(列族),而表(列族)不坐在我身上.我希望每行都有自己的模式. Thrift API可能能够解决这个问题,但似乎hectorsharp几乎已经死了. 一个类似于我的要求的问题,但没有我想要的答案
12 2024-04-12
编程技术问答社区
为什么Cassandra是用Java编写的?
关于 cassandra 为什么有人会在Java上写数据库引擎? 我能理解为什么您要拥有Java接口,但是引擎... 我的印象是没有什么比C/C ++更快的,而且数据库引擎不应该比最大速度慢,而且当然也不使用垃圾收集... 有人可以向我解释什么可能与C/C ++代码上运行的普通SQL更快的可能的感觉/为什么Cassandra可以更快? 编辑: 对不起,"为什么地狱"部分,但这对我来说确实没有任何意义. 我忽略了认为,与普通的花园变差用户程序不同,数据库只需要启动一次,然后运行很长时间,并且可能是服务器上唯一的程序,这是自觉地做出的.重要的性能差异. 我正在比较/引用我在撰写本文时正在使用的"失功能"(略微)Java税收计划(或者更喜欢使用). 实际上,与使用Java用于税收计划不同,使用Java编写专用服务器程序是非常有意义的. 解决方案 我可以看到一些原因: 安全性:在Java中编写安全软件比在C ++中更容易(还记得缓冲区溢出吗
12 2024-04-07
编程技术问答社区
如何在supervisor-linux中为被监督的进程添加一个延迟
我添加了一个使用Python的Cassandra库的瓶服务器,但是它在此错误中退出: Bottle FATAL Exited too quickly (process log may have details) 日志显示了这一点: File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 1765, in _reconnect_internal raise NoHostAvailable("Unable to connect to any servers", errors) ,所以我尝试了使用suspisorctl启动瓶手动运行它,然后没有任何问题.结论=瓶装服务的开始太快(在需要的Cassandra监督服务之前):需要延迟! 解决方案 对sleep hack不太满意,我创建了一个启动脚本并从那里启动supervisorctl start processname. [prog
8 2024-04-03
编程技术问答社区
在cassandra中,将json存储为文本与blob有什么利弊?
对我来说,Blob的一个问题是,在Java,Bytebuffer(在Cassandra中映射到Blob)并非可序列化,因此与EJBS无法正常工作. 考虑到JSON相当大,将在Cassandra存储JSON的更好类型.是文字还是斑点? 决定斑点与JSON时,JSON的大小是否重要? 如果它是其他数据库,例如Oracle,则使用BLOB/CLOB通常.但是在Cassandra中,每个单元都可以容纳2GB,这是否重要? 请考虑这个问题是本案例的文本与斑点之间的选择,而不是对是否要使用JSON单列的建议进行排序. 解决方案 我认为将文字 JSON数据存储为BLOB在Cassandra中没有任何好处.最好的存储成本是相同的,并且通常,API在使用BLOB类型方面不那么方便,而不是使用字符串/文本. 例如,如果您正在使用他们的 java api 然后在为了使用参数化PreparedStatement将数据存储为BLOB,您首先需要将其全部加载到ByteBuffe
14 2024-04-01
编程技术问答社区
是否可以在Cassandra中以CQL blob类型存储PDF文件?
避免问题.为什么您使用Casandra来支持另一个数据库. 我们必须这样做,因为我们的Custoner决定我的选择是完全错误的决定. 在我们的应用中,我们必须处理PDF文档,即读者并用数据填充它们. 因此,我的目的是将文档(模板)保存在数据库中,然后按照我们需要做的事情. 我注意到卡桑德拉(Cassandra)提供了斑点列类型. 但是对我来说,似乎这种类型在QN Oracle或其他关系数据库中没有斑点. 据我了解,Cassandra不适合存储Documnents,因此不可能吗? 或者是从文档中制作字节阵列的唯一方法? Blob列类型的意图是什么? 解决方案 blob键入cassandra中的类型用于存储原始字节,因此"理论上"也可用于存储PDF文件(如字节).但是,应该考虑一件事 - 卡桑德拉(Cassandra)与大的有效载荷无法正常工作 - 通常的建议是存储10或100 kb,不超过1MB.随着更大的有效载荷,操作,例如维修,添加/删除节点等,可能会导致
8 2024-04-01
编程技术问答社区
卡桑德拉在更多的节点上放慢了速度
我在AWS上设置了一个Cassandra集群.我想获得的是增加I/O吞吐量(每秒读取的读数/写入数量),因为添加了更多的节点(如广告上).但是,我的情况恰恰相反.添加新节点时,性能会降低. 您知道有任何典型的问题阻止了缩放吗? 这是一些细节: 我将文本文件(15MB)添加到列家族中.每行都是记录.有150000个记录.当有1个节点时,写作大约需要90秒.但是当有2个节点时,需要120秒.我可以看到数据扩展到2个节点.但是,吞吐量没有增加. 源代码如下: public class WordGenCAS { static final String KEYSPACE = "text_ks"; static final String COLUMN_FAMILY = "text_table"; static final String COLUMN_NAME = "text_col"; public static void main(String[] args) th
2 2024-03-30
编程技术问答社区
为什么在相对较小的数据集上,Cassandra在特定分区上的COUNT(*)需要花费很长时间?
我的表格定义为: 键空间: CREATE KEYSPACE messages WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true; 表: CREATE TABLE messages.textmessages ( categoryid int, date timestamp, messageid timeuuid, message text, userid int, PRIMARY KEY ((categoryid, date), messageid) ) WITH CLUSTERING ORDER BY (messageid ASC); 目标是拥有一个宽行的时间序列存储,以便categoryid和date(开始)构成我的分区密钥,并且messageid提供了聚类.这使
14 2024-03-30
编程技术问答社区
用于时间序列的Cassandra数据模型
我正在研究用于存储时间序列的卡桑德拉数据模型(我是卡桑德拉·纽维). 我有两个应用程序:日内库存数据和传感器数据. 库存数据将通过一分钟的时间分辨率保存. 七个DataField构建了一个时间范围: 符号,日期,开放,高,低,关闭,音量 我将主要通过符号和日期查询数据.例如在DateTime订购的2013-01-01和2013-01-31之间,请给我AAPL的所有数据. Cassandra查询的建议是查询整列.因此,您可以使用钥匙打开,高,低,关闭,音量创建五行.对于每个符号,并分钟为自己的列.例如. " AAPL:2013-01-04T130400Z". 这将导致一个五行和n*nt列的表,其中n =符号数,nt =分钟数. 大多数时候,我会查询日期范围. IE.一天的所有分钟.因此,我可以将数据重新排列为具有名为" AAPL:2013-01-04"和行的列:Opent130400Z,Hight130400Z,Lowt130400Z,Clotet130400Z,volumet
14 2024-03-30
编程技术问答社区
cassandra中的键验证类类型是UTF8还是LongType?
使用Cassandra,我想将2000万以上的行键存储在列族中. 我的问题是: Long和UTF8 Rowkey Keys之间是否存在真正的性能差异? 有没有,行键存储大小问题? 我的用户键看起来像这个 rowKey=>112512462152451 rowKey=>135431354354343 rowKey=>145646546546463 rowKey=>154354354354354 rowKey=>156454343435435 rowKey=>154435435435745 解决方案 Cassandra将所有数据存储在磁盘上(包括行键值)作为十六进制字节数组.在性能方面,行键的数据类型确实无关紧要.它唯一重要的地方是行键的类型验证器/比较器会影响盘类排序顺序.因此,就您而言,长期将与UTF8(ASCII-BETORY)不同(数值). 我找不到这个确切的来源,但我记得我记得,行键的最大大小为64K(您似乎在此下方).默认情况下启用密
20 2024-03-30
编程技术问答社区
按创建日期排序 在Cassandra中
我在 cassandra中订购数据的问题 数据库. 这是我的表结构: CREATE TABLE posts ( id uuid, created_at timestamp, comment_enabled boolean, content text, enabled boolean, meta map, post_type tinyint, summary text, title text, updated_at timestamp, url text, user_id uuid, PRIMARY KEY (id, created_at) ) WITH CLUSTERING ORDER BY (created_at DESC) ,当我运行此查询时,我收到以下消息: 查询: select * from posts order by crea
14 2024-03-30
编程技术问答社区
从Cassandra导出大量数据到CSV
我正在使用Cassandra 2.0.9来存储大量数据,例如,在一个列家族中的100GB.我想以快速的方式将这些数据导出到CSV.我尝试了: sstable2json - 它会产生很大的JSON文件,这些文件很难解析 - 因为工具将数据放入一行并使用复杂的架构(例如300MB数据文件= 〜2GB JSON),因此需要一个倾倒和卡桑德拉(Cassandra)的大量时间喜欢根据其内部机制更改源文件名 复制 - 在相当快速的EC2实例上导致大量记录的超时 捕获 - 如上所述,导致超时 用分页读取 - 我使用了Timeuuid,但它返回了大约1,5k的记录 我使用Amazon EC2实例与快速存储,15 GB的RAM和4个核心 从Cassandra到CSV的数据出口千兆字节是否有更好的选择? 解决方案 2020年代更新:DataStax提供了一种特殊的工具,称为DSBULK,用于从Cassandra(从Cassandra 2.1开始)和DSE(从DSE 4.7/4
18 2024-03-30
编程技术问答社区
cqlsh控制台中的操作超时错误
我有一个三个节点cassandra群集,我创建了一个桌子,有超过2000,000行. 当我在cqlsh中执行此(select count(*) from userdetails)查询时,我得到了此错误: aperation timedout:errors = {},last_host = 192.168.1.2 当我以更少的行或限制50,000运行计数功能时,它可以正常工作. 解决方案 计数(*)实际上通过所有数据页面.因此,没有限制的一个select count(*) from userdetails将有很多行超时.这里有一些详细信息: http://planetcassandra.org/blog/blog/counting-key-key-key-inkey-in-cassandra/ 您可能要考虑自己维护数量,使用火花,或者如果您只想要一个球公园号码,则可以从JMX中获取. 从JMX中获取,根据您的数据模型,这可能有些棘手.要获得分区的数量,
16 2024-03-30
编程技术问答社区
使用Spark的Cassandra阅读基准测试
我正在对卡桑德拉(Cassandra)的阅读表现进行基准测试.在测试设定的步骤中,我创建了一个具有1/2/4 EC2-INSTANCE和数据节点的群集.我写了1张桌子,上面有1亿个条目(〜3 GB CSV文件).然后,我启动了一个Spark应用程序,该应用程序使用Spark-Cassandra-Connector将数据读取到RDD中. 但是,我认为行为应该是以下内容:Cassandra(Spark上的实例数量)使用的实例越多,读取速度就越快!用写作,一切似乎都是正确的(如果群集更大,则更快2倍). . ut:在我的基准标准中,读取始终使用1个属性群集更快,然后用2-或4-Instance cluster !!! ! 我的基准结果: 集群大小4:写:1750秒/读:360秒 集群大小2:写:3446秒/读:420秒 集群大小1:写:7595秒/读: 284秒 附加尝试 - 使用Cassandra -Arters Tool 我在Cassandr