小编mva*_*ebr的帖子

如何折叠 Scala 迭代器并获得延迟计算的序列作为结果?

我有一个字符串迭代器,其中每个字符串可以是"H"(header) 或"D"(detail)。我想将此迭代器拆分为多个块,其中每个块以一个标题开头,并且可以有 0 到多个细节。

我知道如何解决这个问题,将所有内容加载到内存中。例如,下面的代码:

Seq("H","D","D","D","H","D","H","H","D","D","H","D").toIterator
  .foldLeft(List[List[String]]())((acc, x) => x match {
    case "H" => List(x) :: acc
    case "D" => (x :: acc.head) :: acc.tail })
  .map(_.reverse)
  .reverse
Run Code Online (Sandbox Code Playgroud)

返回 5 个块 - List(List(H, D, D, D), List(H, D), List(H), List(H, D, D), List(H, D))- 这就是我想要的。

但是,不是List[List[String]]在结果中,我想要一个Iterator[List[String]]或其他一些结构,它允许我懒惰地评估结果并且如果整个迭代器被消耗则不将整个输入加载到内存中,我只想将被消耗的块加载到内存中一次(例如:当我打电话时iterator.next)。

如何修改上面的代码来达到我想要的结果?

编辑:我在 Scala 2.11 中特别需要这个,因为我使用的环境坚持它。很高兴也接受其他版本的答案。

scala

8
推荐指数
2
解决办法
313
查看次数

python cql驱动程序 - cassandra.ReadTimeout - "操作超时 - 只收到1个响应."

我正在使用Cassandra 2.0和python CQL.

我创建了一个列系列如下:

CREATE KEYSPACE IF NOT EXISTS Identification
  WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy',
  'DC1' : 1 };

USE Identification;

CREATE TABLE IF NOT EXISTS entitylookup (
  name varchar,
  value varchar,
  entity_id uuid,
  PRIMARY KEY ((name, value), entity_id))
WITH
    caching=all
;
Run Code Online (Sandbox Code Playgroud)

然后,我尝试计算此CF中的记录数,如下所示:

#!/usr/bin/env python
import argparse
import sys
import traceback
from cassandra import ConsistencyLevel
from cassandra.cluster import Cluster
from cassandra.query import SimpleStatement

def count(host, cf):    
    keyspace = "identification"
    cluster = Cluster([host], port=9042, control_connection_timeout=600000000)
    session = cluster.connect(keyspace)
    session.default_timeout=600000000 …
Run Code Online (Sandbox Code Playgroud)

python cql3 cassandra-2.0

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

令牌感知Astyanax连接池连接节点而不通过节点分配连接

我使用的是astyanax连接池,定义如下:

ipSeeds = "LOAD_BALANCER_HOST:9160";
conPool.setSeeds(ipSeeds)
.setDiscoveryType(NodeDiscoveryType.TOKEN_AWARE)
.setConnectionPoolType(ConnectionPoolType.TOKEN_AWARE);
Run Code Online (Sandbox Code Playgroud)

但是,我的群集有4个节点,我有8个客户端机器连接在它上面.LOAD_BALANCER_HOST将请求转发给我的四个节点之一.

在客户端节点上,我有:

$netstat -an | grep 9160 | awk '{print $5}' | sort |uniq -c
    235 node1:9160
    680 node2:9160
      4 node3:9160
      4 node4:9160
Run Code Online (Sandbox Code Playgroud)

因此,虽然ConnectionPoolType是TOKEN_AWARE,我的客户端似乎主要连接到node2,有时连接到node1,但几乎从不连接到节点3和4.
问题是:为什么会发生这种情况?难道令牌识别连接池不应该查询节点列表的环并使用循环算法连接到所有活动节点吗?

cassandra amazon-elb astyanax cassandra-2.0

5
推荐指数
1
解决办法
698
查看次数

如何在拉取请求中创建问题评论?

根据这个问题,公关只是一个问题,有些事情是最重要的.

如何获取相关的问题ID?

我刚看到issue_url作为拉请求对象的属性.此外,PR有方法create_review_comment但没有方法create_issue_comment.

这样的方法怎么样?

如何在Pull Request中创建问题评论?

python github-api github3.py

1
推荐指数
2
解决办法
893
查看次数