当前位置: 首页 > 知识库问答 >
问题:

Spark Cassandra连接器的正确使用

司徒焕
2023-03-14
class CassandraStorage(conf:SparkConf) {
  val session = CassandraConnector(conf).openSession()
  def store (t:Thingy) : Unit = {
    //session.execute cql goes here
  }
}

这是个好办法吗?我需要担心关闭会话吗?我在哪里/怎么做最好?任何指针都很感激。

共有1个答案

姬烨磊
2023-03-14

您确实希望使用withSessionDo,因为它实际上不会在每次访问时打开和关闭会话。在下面,withSessionDo访问JVM级别的会话。这意味着每个集群配置每个节点只有一个会话对象。

这意味着代码

val connector = CassandraConnector(sc.getConf)
sc.parallelize(1 to 10000000L).map(connector.withSessionDo( Session => stuff)

无论每台机器有多少核,在每个执行器JVM上只会生成一个集群和会话对象。

sc.parallelize(1 to 10000000L)
  .mapPartitions(it => connector.withSessionDo( session => 
      it.map( row => do stuff here )))
 类似资料:
  • 我们在我们的项目中使用连接池。我们在我们的项目中看到,在连接关闭后,语句也会关闭。我知道在连接池的情况下,连接关闭后,到数据库的物理连接不会关闭,而是返回到池进行重用。所以我的问题是: 如果在连接关闭后关闭语句会发生什么?语句是否会正确关闭/关闭连接是否会关闭所有语句,关闭语句是多余的/语句是打开的,尽管连接返回到池中,但由于打开语句,它是不可重用的?(我们同时使用Statement和Prepar

  • 错误: 发生错误:09:54:58:错误:连接到服务器时出错:致命:用户“Postgres”的密码身份验证失败。

  • 我写了一个类,其中有连接池和流水线,使用这个类的方法类似于(我删除了一个循环,但setKey将发生在循环中): 因此,一旦管道上的项目数超过200,i同步项目并清除管道,然后重新启动。问题是如何使用此设置将连接正确地返回到池。 据我所知,我必须将jedispool.getResource()包装到try块中,但我无法考虑如何将它与管道和计数器结合在一起。

  • 我的问题是,我在java iso客户端和测试服务器之间有ssl连接。连接正常,握手没有问题,但服务器接收到不正确的数据。 正如我在日志服务器中看到的,在一次读取操作期间只接收部分数据,并且输入流中也存在一些奇怪的数据-可能与证书信息有关。 请注意,如果没有ssl,此客户端和服务器工作时不会出现任何问题。而且,当我用java keyTool简单地创建jks标准证书时,一切都正常,问题也不会发生。 但

  • 在 OpenResty 中,连接池在使用上如果不加以注意,容易产生数据写错地方,或者得到的应答数据异常以及类似的问题,当然使用短连接可以规避这样的问题,但是在一些企业用户环境下,短连接 + 高并发对企业内部的防火墙是一个巨大的考验,因此,长连接自有其用武之地,使用它的时候要记住,长连接一定要保持其连接池中所有连接的正确性。 -- 错误的代码 local function send() fo

  • 问题内容: 我不时看到有关连接数据库的问题。 大多数答案不是我做的方式,否则我可能只是无法正确获得答案。无论如何; 我从未考虑过,因为我的工作方式对我有效。 但是这里有个疯狂的想法;也许我做错了所有,如果是这样的话;我真的很想知道如何使用PHP和PDO正确连接到MySQL数据库并使其易于访问。 这是我的做法: 首先,这是我的文件结构 (向下精简) : index.php 在最顶部,我有。 load