小编Ese*_*gün的帖子

一次消耗多条消息

我正在使用外部服务(服务)来处理某些特定类型的对象.如果我以10个批次发送对象,则服务运行得更快.我目前的架构如下.生产者一个接一个地广播对象,一群消费者从队列中拉出它们(一个接一个)并将它们发送给服务.这显然不是最理想的.

我不想修改生产者代码,因为它可以在不同的情况下使用.我可以修改消费者代码,但只能增加额外的复杂性.我也知道这个prefetch_count选项,但我认为它只适用于网络级别 - 客户端库(pika)不允许在消费者回调中同时获取多个消息.

那么,RabbitMQ可以在将消息发送给消费者之前创建批量消息吗?我正在寻找像"一次消费n条消息"这样的选项.

python rabbitmq pika

7
推荐指数
1
解决办法
2435
查看次数

对多键索引进行慢速查询

我有一个名为MongoDB的集合post3500万级的对象.该集合有两个二级索引,定义如下.

> db.post.getIndexKeys()
[
    {
        "_id" : 1
    },
    {
        "namespace" : 1,
        "domain" : 1,
        "post_id" : 1
    },
    {
        "namespace" : 1,
        "post_time" : 1,
        "tags" : 1  // this is an array field
    }
]
Run Code Online (Sandbox Code Playgroud)

我希望以下查询,只需过滤namespacepost_time,在合理的时间内运行而不扫描所有对象.

>db.post.find({post_time: {"$gte" : ISODate("2013-04-09T00:00:00Z"), "$lt" : ISODate("2013-04-09T01:00:00Z")}, namespace: "my_namespace"}).count()
7408
Run Code Online (Sandbox Code Playgroud)

然而,MongoDB需要至少十分钟来检索结果,奇怪的是,它设法根据功能扫描7000万个对象来完成工作explain.

> db.post.find({post_time: {"$gte" : ISODate("2013-04-09T00:00:00Z"), "$lt" : ISODate("2013-04-09T01:00:00Z")}, namespace: "my_namespace"}).explain()
{
    "cursor" : "BtreeCursor namespace_1_post_time_1_tags_1",
    "isMultiKey" : true, …
Run Code Online (Sandbox Code Playgroud)

indexing mongodb mongodb-indexes

6
推荐指数
1
解决办法
1349
查看次数

在Amazon EMR上使用Mrjob处理MongoDB数据

我知道Mrjob使用Hadoop Streaming.我也知道有一个插件可以将MongoDB与Hadoop Streaming一起使用.但是,我找不到任何将两者结合在一起的例子.

这(至少在理论上)是否可能?如果是这样,是否有相关的示例或教程?请注意,我愿意扩展Mrjob库甚至回到Boto.

python hadoop mongodb amazon-emr mrjob

6
推荐指数
0
解决办法
239
查看次数

非生物序列比对工具

是否有用于对齐任意大字母序列的工具/库?

市场上几乎所有的序列比对工具都集中在生物序列(核苷酸或肽)上.然而,在我的例子中,序列由数百个不同的元素组成,它们不能编码为ASCII字符串.所以,我需要一个工具或库,它可以简单地对齐两个(或更多)整数数组.

sequence-alignment

5
推荐指数
0
解决办法
517
查看次数