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

如何使工人只查询本地cassandra节点?

谯英彦
2023-03-14

假设我有几台机器,每台都安装了spark worker和cassandra node。是否可以要求每个spark worker只查询它的本地cassandra节点(在同一台机器上),这样当我使用spark-cassandra-connector在repartitionByCassandraReplica之后连接Cassandratable时就不涉及网络操作,所以每个spark worker从它的本地存储中获取数据?

共有1个答案

楚承天
2023-03-14

在Spark-Cassandra连接器中,LocalNodeFirstLoadBalancingPolicy处理这项工作。它首先选择本地节点,然后检查相同DC中的节点。具体来说,使用java.net.networkinterface确定本地节点,以便在主机列表中查找与本地地址列表中的地址匹配的地址,如下所示:

private val localAddresses =
  NetworkInterface.getNetworkInterfaces.flatMap(_.getInetAddresses).toSet

/** Returns true if given host is local host */
def isLocalHost(host: Host): Boolean = {
  val hostAddress = host.getAddress
  hostAddress.isLoopbackAddress || localAddresses.contains(hostAddress)
}

此逻辑用于创建查询计划,该计划返回查询的候选主机列表。无论计划类型如何(识别或不识别令牌),列表中的第一个主机始终是本地主机(如果存在的话)。

 类似资料:
  • 我试图将一个独立的产品集成到LDAP环境中。 是否有一种方法可以让getgrnam和getpwnam只查询本地系统,而不必在运行脚本时重新配置nsswitch.conf并可能停止/启动SSSD? 是否有另一个perl函数可以用来只查询本地用户/组?

  • Navicat 为视觉化地创建查询提供一个有用的工具,称为 查询创建工具。它让你不需要 SQL 知识就能创建及编辑查询。数据库对象显示在左边窗格。而在右边窗格,它分为两部份:上面的 图表设计 窗格,和下面的 语法 窗格。 注意:视觉化创建工具只支持 SELECT 语句。请使用查询编辑器来创建复杂的查询。 要添加表或视图到查询,简单地从左边窗格拖曳它到图表设计窗格或双击它。要在查询包含字段,在图表设

  • 问题内容: 这是我的PostgreSQL函数: 它有一个参数,我想通过JPQL 将Java传递给它: 上面的代码失败,但例外: 所以我不确定如何从EclipseLink调用我的函数。 问题答案: 通过将String []类型的Java数组传递给您进行测试,以进行测试。似乎PgJDBC不接受Java数组作为带有或不带有参数的参数。 合规 JDBC规范 16.5“数组对象” 建议JDBC 部分存在,因

  • 我正在创建kubernetes集群,其中包括:1个主节点(M1),2个工作节点(W1和W2) 使用部署创建副本数为5的吊舱。

  • 问题内容: 我正在使用datastax Java驱动程序3.1.0连接到cassandra集群,而我的cassandra集群版本是2.0.10。 下面是我用来连接cassandra集群的单例类。 首先需要使用哪些设置来连接本地cassandra节点,如果它们已关闭,则仅与远程节点通信。我的池配置选项也就在这里,上面的代码中正在使用该选项? 问题答案: 默认情况下,datastax驱动程序将仅连接到