问题标签 [pycassa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
744 浏览

python - 如何处理 AllServersUnavailable 异常

我想对单个节点上的 Cassandra 实例(v1.1.10)进行简单的写入操作。我只是想看看它如何处理持续写入,以及它是否能跟上写入速度。

长时间写入后(当计数器约为 10M+ 时),代码不断崩溃,并显示以下消息

pycassa.pool.AllServersUnavailable: An attempt was made to connect to each of the servers twice, but none of the attempts succeeded. The last failure was timeout: timed out

我设置了queue_size=100这没有帮助。cqlsh -3此外,在脚本崩溃并出现以下错误后,我启动了控制台以截断表格:

Unable to complete request: one or more nodes were unavailable.

Tailing/var/log/cassandra/system.log没有给出错误信号,但有关于 Compaction、FlushWriter 等的 INFO。我究竟做错了什么?

0 投票
1 回答
394 浏览

cassandra - 如何使用pycassa删除一行中的所有列?

我有一个包含多个简单列的行,我只需要删除行中的列而不删除行键本身。

我尝试使用 remove('row key') 但它会删除行键本身。如何使用 remove() 函数删除一行中的所有列?

0 投票
2 回答
2428 浏览

python - 并行使用多个(python)客户端从 cassandra 加载所有行

当使用 Cassandra 推荐的 RandomPartitioner(或 Murmur3Partitioner)时,不可能对键进行有意义的范围查询,因为行使用键的 md5 散列分布在集群周围。这些哈希称为“令牌”。

尽管如此,通过为每个计算工作者分配一系列令牌来在许多计算工作者之间拆分一个大表将非常有用。使用 CQL3,似乎可以直接针对 tokens 发出查询,但是以下 python不起作用...编辑:在切换到针对 cassandra 数据库的最新版本(doh!)进行测试后工作,并且还更新每个语法以下注释:

理想情况下,我希望使用 pycassa 来完成这项工作,因为我更喜欢它的 Pythonic 界面。

有一个更好的方法吗?

0 投票
2 回答
263 浏览

python - 在 pycassa 中指定列类型

我想在 pycassa 中对这些 CLI 命令进行等效处理:

pycassa中的等价物是什么?谢谢

0 投票
1 回答
732 浏览

python - python pycassa编码问题

使用 pycassa 在 cassandra 中插入数据时出现编码问题。字段名称是“文本”,内容是可以包含非 ascii 字符的推文。我尝试使用 encode('UTF-8') 对文本字段进行编码,它显示,从 'unicode' 转换为 'str' 但仍然失败?确切的错误在这里,

编辑 1:对于在 Cassandra 中失败的字段,是否未定义默认验证器类型?这会是个问题吗?如果未指定类型,cassandra 会将其存储为什么?

编辑2:这回答了编辑1。刚刚注意到一些事情,它失败的字段没有定义默认类型,并且根据文档,cassandra将尝试将其存储为十六进制字节数组(ByteType),因为我正在尝试插入UTF- 8 编码的字符串,这可能是个问题吗?

追溯:

Traceback(最近一次调用最后一次):文件“/opt/socialflow/prod/api-reporting/api-reporting/CassFH/app/c.py”,第 40 行,在 send Mutator.send(self, *a, ** kw)文件“/usr/local/lib/python2.6/dist-packages/pycassa/batch.py​​”,第 126 行,在发送 allow_retries=self.allow_retries)

文件“/usr/local/lib/python2.6/dist-packages/pycassa/pool.py”,第 124 行,在 new_f 结果 = f(self, *args, **kwargs)
文件“/usr/local/lib /python2.6/dist-packages/pycassa/cassandra/Cas​​sandra.py”,第 1005 行,在 batch_mutate self.send_batch_mutate(mutation_map,consistency_level)
文件“/usr/local/lib/python2.6/dist-packages/pycassa/ cassandra/Cas​​sandra.py”,第 1013 行,在 send_batch_mutate args.write(self._oprot)
文件“/usr/local/lib/python2.6/dist-packages/pycassa/cassandra/Cas​​sandra.py”,第 5200 行,在写 oprot.trans.write(fastbinary.encode_binary(self, (self.class , self.thrift_spec )))UnicodeEncodeError: 'ascii' codec can't encode character u'\xbf' in position 0: ordinal not in range(128 )[2013-05-20 21:31:14,450]根关键:

0 投票
1 回答
667 浏览

python - 使用 pycassa 创建列族

如何使用 pycassa 以编程方式创建列族?我在文档中找不到它。似乎所有列族操作都处理现有的列族。

0 投票
1 回答
374 浏览

cassandra - 使用 Pycassa 的 Cassandra 复合键列族

我使用 CQL 在 Cassandra 中创建了一个复合键控列族。例如

根据文档,复合键的第一部分是分区键,第二部分用作排序值。现在,我只想使用 Pycassa 检索特定键的 5 个顶部列。我已经使用 Datastax java Driver 完成了它,但我想在 Pycassa 中完成它。关于如何做到这一点的任何建议?

0 投票
1 回答
33 浏览

python - 在 pycassa 索引表达式中使用 OR

有没有办法使用 pycassa 的方法来表达ORcrerate_index_clause()运算符?我知道我可以创建两个子句并比较结果,但我喜欢只创建一个子句的解决方案。

0 投票
1 回答
538 浏览

python - 使用 Python 和 datetime 模块根据 TimeUUIDType 从 Cassandra 获取列范围

我有一个像这样设置的表:

{"String" : {uuid1 : "String", uuid1: "String"}, "String" : {uuid : "String"}}

或者...

(它基本上将网站作为行标签,并基于 datetime.datetime.now() 在 Cassandra 中使用 TimeUUIDType 和字符串作为值动态生成列)

我希望使用 Pycassa 根据行和列检索数据切片。但是,在其他(较小的)表上,我已经这样做了,但是通过下载整个数据集(或至少过滤到一行)然后有一个有序的字典,我可以与 datetime 对象进行比较。

我希望能够使用 Pycassa multiget 或 get_indexed_slice 函数来提取某些列和行。是否存在允许过滤日期时间的类似内容。我当前的所有尝试都会导致以下错误消息:

TypeError: can't compare datetime.datetime to UUID

到目前为止,我设法想出的最好的方法是......

将 get_posixtime 定义为:

这似乎不起作用(没有返回我期望的数据)并且感觉它不应该是必要的。我正在使用以下方法创建列时间戳:

timestamp = datetime.datetime.now()

有人有什么想法吗?感觉这是 Pycassa(或其他 python 库)支持的那种东西,但我不知道该怎么做。

cqlsh 描述的 ps 表模式:

ps

我知道您可以在 Pycassa 中指定一个列范围,但我无法保证该范围的开始值和结束值对每一行都有条目,因此该列可能不存在。

0 投票
1 回答
439 浏览

python - 无法使用带有复合行键(UTF8Type、DateType)的 Pycassa 插入 Cassandra 列族

我有一个 Cassandra 列族(使用 Pycassa 创建),其架构如下:

我正在尝试使用以下行插入其中:

哪里tracker_key是:

('cd7449e8-8f0d-4730-9ee4-ef60edfdd409', datetime.datetime(2013, 8, 14, 16, 47, 55, 856000))

我希望这能奏效——我在其他表中使用日期类型作为行键,它们很有效。此外 - 看起来我正在关注 Pycassa 网站上的教程(http://pycassa.github.io/pycassa/assorted/composite_types.html)。

有关更多信息,我正在使用 Pycassa 1.9.0 版和 Cassandra 1.2.8

谢谢,

马特

编辑:

在一个奇怪的事件中,我收到的第一条错误消息:

TypeError: A str or unicode value was expected, but datetime was received instead (2013-08-14 16:45:15.376000)

我尝试这样修改查询:

tracker_key = (str(dictionary_to_insert['session_id']), datetime.datetime.strftime(dictionary_to_insert['datestamp'], "%Y-%m-%d %H:%M:%S"))

即将日期时间更改为字符串

并收到以下错误消息:

莫名其妙。