Cassandra:生成一个唯一的ID?
我正在研究分布式数据库.我正在尝试生成一个独特的ID,该ID将用作列族主要键 in 我使用UUID读了一些有关使用Java进行此操作的文章,但似乎有碰撞的可能性(即使它非常低). 我想知道是否有一种方法可以根据时间生成唯一的ID? 解决方案 您可以使用TimeUUID在Cassandra中键入TimeUUID,该 type 1 uuid .这使用当前时间和创建者的MAC地址和序列号.如果正确生成了时间元数,则可以使用零碰撞(您可以使用CQL now() 方法或插入您自己的Java SDK提供了一些线程安全实现). TimeUUIDs的主要优点是可以订购IDS.请参阅 http://wiki.apache.org/cassandra/timebaseuuidnotes 有关更多信息. > 但是,时间订购不太可能对行主键有用,因为使用href ='https://wwwww.datastax.com/dev/可能使用订购时,订购毫无用处blog/we-shall-have-r
2 2023-11-12
编程技术问答社区
通过CQLsh插入一个硬编码的UUID(Cassandra)。
想通过CQLSH脚本填充一些静态测试数据. 这不起作用:( device_id是uuid) insert into devices (device_id, geohash,name, external_identifier, measures, tags) values ('c37d661d-7e61-49ea-96a5-68c34e83db3a','9q9p3yyrn1', 'Acme1', '936', {'aparPower','actPower','actEnergy'},{'make':'Acme'}); 不良请求:无效字符串常数 (C37D661D-7E61-49E-96A5-68C34E83DB3A)用于uuid类型的设备 我似乎找不到任何CQL函数来转换为正确的类型.我需要从python脚本执行此操作吗? 谢谢 克里斯 解决方案 您不应该将引号周围放置在UUID周围以停止将其解释为字符串,即 insert into device
2 2023-11-12
编程技术问答社区
Cassandra UUID与TimeUUID的优势和劣势
鉴于时间元素可以轻松地允许您在CQL中使用now(),是否有任何原因您不仅会继续使用timeuuid而不是普通的旧uuid? 解决方案 UUID和TIMEUUID以相同的方式存储在Cassandra中,它们仅代表了两个不同的分类实现. TIMEUUID列首先用其时间组件对其进行排序,然后由其原始字节进行排序,而UUID列首先用其版本对其进行排序,那么,如果两者都按时间组件为1版,则最终由他们的raw进行排序.字节.在Cassandra代码中,在UUIDType和TimeUUIDType之间复制了时间组件分类实现,除了不同的格式. 我想到UUID vs. TIMEUUID问题主要是文档:如果您选择TIMEUUID您是说您按时间顺序存储事物,并且这些事情可以同时发生,所以简单的时间戳还不够.使用UUID说您不在乎订单(即使在实践中,如果您将版本1 UUID放入其中,则会按时间订购),您只想确保一切都具有独特的ID. 即使使用NOW()生成UUID值很方便,对于其他阅
0 2023-11-12
编程技术问答社区
将两个结果集连接成一个
我想知道是否有办法将两个或多个结果集加入一个. 实际上,我需要执行多个查询并仅返回一个结果集.我无法使用工会或加入运营商,因为我正在与Cassandra(CQL)合作 预先感谢! 解决方案 像Playorm这样的框架为Cassandra中的加入(内部和左联接)查询提供支持. > 您可能会看到更多示例: 其他解决方案 如果您想查询同一列家族中的多行,则可以使用关键字: SELECT * FROM testCF WHERE key IN ('rowKeyA', 'rowKeyB', 'rowKeyZ') LIMIT 10; 这将使您从每一行回来10个结果. 如果您需要加入不同CFS的结果,或与条款不同的地方查询,则您需要运行多个查询并将结果合并为代码-Cassandra不适合这种事情. 其他解决方案 PlayOrm可以进行连接,但是您可能需要对Playorm进行分区,以便您仍然扩展. (即.通常,您会使用另一个分区或在帐户表上加入一个分
0 2023-11-06
编程技术问答社区
用Python向Apache Cassandra加载.csv文件的问题
我正在尝试将带有Python的.CSV文件加载到Apache Cassandra数据库中. 与session集成的命令"复制".执行似乎不起作用. 它给出了=','的通信的意外缩进,但是...我红色一些,我发现不支持以这种方式的命令副本. 在此脚本time_test中,P是两个浮点变量 from cassandra.cluster import Cluster cluster = Cluster() session = cluster.connect('myKEYSPACE') rows = session.execute('COPY table_test (time_test, p) from'/home/mypc/Desktop/testfile.csv' with delimiter=',' and header=true; ')
4 2023-11-02
编程技术问答社区
cassandra 3.5无法加载触发器类
我正试图开始使用Cassandra Triggers,但我无法让Cassandra加载它们.我已经从这里构建了JAR文件.//github.com/markreddy/cassandra-trigger-example" rel =" nofollow">此处,然后将它们放在C:\Program Files\DataStax-DDC\apache-cassandra\conf\triggers下.我已经重新启动了DataStax_DDC_Server服务(在Windows上)并重新打开了CQLSH命令行,但是尝试在create trigger命令中使用触发类,仅给了我: ConfigurationException:
2 2023-10-26
编程技术问答社区
处理Cassandra时间戳的问题
最近,我开始从事卡桑德拉(Cassandra),使用CQL和Java与Cassandra Timestamp打交道时,我遇到了一些问题. 下面是我的样本Cassandra表格架. CREATE TABLE emp ( empid int, create_date timestamp, deptid int, PRIMARY KEY (empid, create_date) ) 以下是我的问题: 1)实际上我只需要日期(我不担心时间),在我的表格架上,我使用了时间戳数据类型,是否有任何数据类型,例如日期仅存储日期而不是时间戳. 2)如果下面没有时间戳数据类型的选择,我将记录手动插入表格 Insert into emp(empId, deptId, create_date) values(1,2,'2016-03-15 00:00:00+0000'); 当我试图查询使用CQL以下的CQL检索记录时 select * fr
2 2023-10-22
编程技术问答社区
Cassandra:带有时间戳和大数据集的表设计
我在一天中遇到问题,在一天中查询大量数据.我正在寻找有关创建有效表格架构的建议. 表:eventlog 列: RecordID(UUID),InsertedTimestamp(时间戳),源(文本),事件(文本) 如果我只是这样做: CREATE TABLE eventlog ( recordid uuid PRIMARY KEY, insertedtimestamp timestamp, source text, event text ); 那么,以下查询将被数据量淹没,假设今天是1/25. select * from eventlog where insertedtimestamp > '2017-01-25'; 目标是从一天中选择所有记录,因为我们知道我们需要使用具有数百万记录的表进行分区效率.我将如何设计有效的表模式(什么分区密钥设置)?谢谢. 解决方案 尽管您想在一天之内获取所有记录,但您可以使用此架
12 2023-10-22
编程技术问答社区
如何在使用命令行时用CQL获得当前的时间戳?
我试图从命令行插入我的CQL表中.我能够插入所有内容.但是我想知道我是否有时间戳列,那么如何从命令行中插入时间戳列?基本上,我想每当我插入CQL表时插入当前的时间戳 - 目前,每当我插入下面的CQL表 - 时,我都在硬编码时间戳. CREATE TABLE TEST (ID TEXT, NAME TEXT, VALUE TEXT, LAST_MODIFIED_DATE TIMESTAMP, PRIMARY KEY (ID)); INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE) VALUES ('1', 'elephant', 'SOME_VALUE', 1382655211694); 是否有任何方法可以使用CQL中的一些预定义功能获取当前的时间戳,以便在上表中插入上表时,我可以使用该方法获取当前的时间戳,然后插入上表? ? 解决方案 您可以使用timeuuid函数now()和dateof()(或在Cass
2 2023-10-22
编程技术问答社区
Cassandra cqlsh-how to show microseconds/milliseconds for timestamp columns?
我要插入带有时间戳列的Cassandra表中.我带有微秒精度的数据,因此时间数据字符串看起来像这样: 2015-02-16T18:00:03.234+00:00 但是,在CQLSH中,当我运行选择查询时,没有显示微秒数据,我只能看到时间到第二精度. 234 微秒数据未显示. 我想我有两个问题: 1)卡桑德拉是否使用时间戳数据类型捕获微秒?我的猜测是? 2)如何与CQLSH看到它以验证? 表定义: create table data ( datetime timestamp, id text, type text, data text, primary key (id, type, datetime) ) with compaction = {'class' : 'DateTieredCompactionStrategy'}; 插入查询与java准备的启动: insert into data (datetime, i
6 2023-10-22
编程技术问答社区
使用Cassandra进行时间序列数据存储
我是卡桑德拉(Cassandra)的新手,现在在这里为我们的需求进行评估 - 我需要处理一个动态存储,该存储容纳来自许多来源的信号数据.每个源与它的元数据值一起提供了一个连续的信号数据流(时间值序列). 处理此类数据的最佳数据模型,甚至是起点是什么?是否可以使用CQL将数据插入矢量(而不是按样品采样)?与具体示例的任何链接都将不胜感激! 谢谢 更新: 非常感谢您的有用评论!我查看了几个示例,方法很清楚.我仍然有两个问题: 我在cqlsh上看到了时间邮票值夫妇在单独的行上而不是在一行中看到(例如,如果我将3对时间邮票值插入相同的密钥中,我希望能在查询1行上获得它带有3个时间戳列 是否可以插入值的向量(而不是重复插入)? 谢谢 解决方案 是否可以插入值的向量(而不是重复插入)? 我希望您尝试使用批处理执行.这是您的好起点. http://docs.datastax.com/en/cql/3.1/CQL/cql_reference/batch_
4 2023-10-22
编程技术问答社区
卡桑德拉内部存储
我试图理解当行(列)插入CQL样式表中的存储引擎级别内部发生了什么. CREATE TABLE log_date ( userid bigint, time timeuuid, category text, subcategory text, itemid text, count int, price int, PRIMARY KEY ((userid), time) - #1 PRIMARY KEY ((userid), time, category, subcategory, itemid, count, price) - #2 ); 假设我有一张像上面的桌子. 在#1的情况下,CQL行将在存储中生成6(或5?)列. 如果是#2,CQL行将在存储中生成一个非常复合的列. 我想知道将原木存储到Cassandra中更有效的方法. 请重点关注给定的两种情况. 我不需要任何实时读取.只是著作. 如果您想建议其他选项,请参考
2 2023-10-21
编程技术问答社区
Cassandra中的RPC超时
我有以下错误: cqlsh:dev> SELECT DISTINCT id FROM raw_data; Request did not complete within rpc_timeout. 这是一个我再也不会进行的特殊查询,我不在乎需要多长时间,我不想更改我的模式(因为我再也不会询问查询了...) . 如何增加rpc_timeout此查询? 我尝试添加LIMIT 9999和ALLOW FILTERING,这无济于事.我预计结果不到1000行.该查询在另一个带有一半数据的Cassandra群集上起作用. 编辑:事实证明,这个特定的命令在我运行nodetool compact之后成功了,但是我对一个查询的一般情况更感兴趣. 解决方案 在/cassandra/conf 下增加cassandra.yaml文件中的读取请求时间 read_request_timeout_in_ms: 30000 更改此重新启动服务器并执行查询,可能是您的问题得到解决
4 2023-10-21
编程技术问答社区
cqlsh-Cassandra中的RPC超时
我的戒指中有5个节点,带有SimpleTopologyStrategy和replication_factor=3.我使用压力工具插入了1m行.当尝试使用 读取CQLSH的行计数时 SELECT count(*) FROM Keyspace1.Standard1 limit 1000000; 它失败了错误: 请求在RPC_Timeout中未完成. 它以限制为100000.即使是500000. 我所有的节点都在起来.我需要增加rpc_timeout? 请帮助. 解决方案 您会遇到此错误,因为请求在服务器端发生时间.人们应该知道,这是卡桑德拉(Cassandra)的一次非常昂贵的操作. 仍然,如果您真的想这样做,则应更新/etc/cassandra/cassandra.yaml文件并更改range_request_timeout_in_ms参数.这将对您的所有范围查询有效. 设置40秒超时的示例: range_request_timeo
2 2023-10-21
编程技术问答社区
cql支持python 3吗?
CQL是否具有支持Python3? 我尝试使用PIP安装,但失败了. rabit@localhost:/usr/bin> pip-3.3 install cql ^CDownloading/unpacking cql Operation cancelled by user Storing complete log in /home/rabit/.pip/pip.log rabit@localhost:/usr/bin> sudo pip-3.3 install cql root's password: Downloading/unpacking cql Downloading cql-1.4.0.tar.gz (76kB): 76kB downloaded Running setup.py egg_info for package cql Downloading/unpacking thrift (from cql) Running setup.py egg_i
2 2023-10-20
编程技术问答社区
Cassandra读取一个负的框架大小
我在尝试使用cassandra-jdbc(1.1.3)驱动程序查询Cassandra时遇到此错误. Caused by: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2147418110)! at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:133) at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) at org.apache.thrift.protocol.TBinaryProtocol.readStringBody
6 2023-10-20
编程技术问答社区
Cassandra CQL方法用于分页浏览所有行
我想编程检查大型卡桑德拉桌上的所有行,并希望使用CQL.我知道我可以通过节俭做到这一点,一次将10,000(左右)的行与Multiget一起获得10,000(左右),然后将最后一个检索的钥匙交给下一个多拨号呼叫.但是我已经浏览了CQL Select上的所有文档,似乎没有一种方法可以做到这一点.我求助于设置越来越高的选择限制,并将超时设置越来越高以匹配它. 是否有一种无证件的方法可以将起点交给CQL Select,还是只需要使用Thrift API分解并重写我的代码? 解决方案 结果比具有非常直觉但有用的行为要大(至少在CQL2中,我还没有检查CQL3).它实际上比较了令牌而不是钥匙值.这是一个示例: > create table users (KEY varchar PRIMARY KEY, data varchar); > insert into users (KEY, 'data') values ('1', 'one'); > insert into users
10 2023-10-20
编程技术问答社区
使用cql比thrift的优势
使用CQL超过节俭有什么明显的优势,还是仅仅是开发人员过于使用SQL的情况?我想从节俭查询转换为CQL,唯一的问题是我不确定这样做的不利之处.他们是什么? 解决方案 查询 在CQL中,您可以查询Cassandra并以几行(使用JDBC驱动程序)获取数据: String query = "SELECT * FROM message;"; PreparedStatement statement = con.prepareStatement(query); 在基于节俭的API中,它更复杂(例如,Astyanax): OperationResult> result = keyspace.prepareQuery(mail/*specify columnfamily structure*/) .getKey("lyuben@1363115059").execute(); ColumnList
6 2023-10-20
编程技术问答社区
目前只支持PRIMARY KEY的集群列的Order by。
cassandra2.0.7 CQL 3.1.1 CREATE TABLE playlists ( id uuid, song_order int, song_id uuid, title text, album text, artist text, PRIMARY KEY (id, song_order ) ); INSERT INTO playlists (id, song_order, song_id, title, artist, album) VALUES (62c36092-82a1-3a00-93d1-46196ee77204, 1, a3e64f8f-bd44-4f28-b8d9-6938726e34d4, 'La Grange', 'ZZ Top', 'Tres Hombres'); INSERT INTO playlists (id, song_order, song_id, title, artist, album)
4 2023-09-22
编程技术问答社区
Cassandra错误-只有当分区键被EQ或IN限制时才支持Order By。
这是我正在创建的表格,此表包含有关玩过最后一杯杯子的玩家的信息. CREATE TABLE players ( group text, equipt text, number int, position text, name text, day int, month int, year int, club text, liga text, capitan text, PRIMARY key (name, day, month, year)); 进行以下查询时: 从最古老的球员那里获得5个名字,这些名字是选拔队的队长 这是我的查询: SELECT name FROM players WHERE captain='YES' ORDER BY year DESC LIMIT 5; 我遇到了这个错误: 仅在分区密钥受方程式限制或 限制时才受支持的顺序 我认为我正在创建的桌子是一个问题,但我不知道如何解决. 谢
4 2023-09-22
编程技术问答社区