Spark Cassandra连接器节点是否知道



Datastax Cassandra社区版与使用Spark Cassandra连接器的Spark社区版的集成是否支持社区版节点,还是仅为企业版保留此功能?

我所说的节点感知是指Spark是否会将作业执行发送给拥有数据的节点

是的,Spark连接器是节点感知的,并且将以这种方式与DSE和(开源(Apache Cassandra一起工作。

事实上,在SELECT上,它知道如何将分区键散列到令牌,并只向负责该数据的节点发送对特定令牌范围的查询。它可以做到这一点,因为(像Cassandra Java驱动程序一样(它有一个了解节点间八卦的窗口,可以查看节点状态(向上/向下(和令牌范围分配等信息。

在Spark中,它被称为数据位置

只有当Cassandra的JVM和Spark worker/executor都位于同一OSI中时,才能实现数据本地化。根据定义,如果执行处理的执行器与Cassandra节点在同一服务器(OSI(上运行,则数据只能是本地的。

在与集群的初始联系过程中,驱动程序检索有关集群拓扑的信息——可用节点、机架/DC配置、令牌所有权。由于驱动程序知道节点的位置,所以它总是试图连接到"节点";最接近的";同一(本地(数据中心中的节点。

如果Spark工作程序/执行程序与Cassandra节点位于同一位置,则Spark Cassandra连接器将尽可能在拥有数据的节点上处理Spark分区,以减少网络中的数据混乱量。

存在诸如joinWithCassandraTable()之类的方法,其在可能的情况下最大化数据局部性。此外,repartitionByCassandraReplica()方法会拆分Spark分区,以便将它们映射到拥有数据的Cassandra副本。

此功能适用于开源Cassandra集群和DataStax Enterprise集群。干杯

最新更新