【问题标题】:How to connect to multiple Cassandra in different dc如何连接到不同 dc 中的多个 Cassandra
【发布时间】:2019-09-13 15:48:32
【问题描述】:

我正在设置一个应用程序,在该应用程序中我使用 spark session 从 Cassandra 读取数据。如果我从 dc 传递一个 Cassandra 节点,我可以从 Cassandra 读取数据。 但是如何在 spark 会话中连接到属于 3 个不同 dc 的 3 个不同 Cassandra 节点。

这里是我正在使用的代码:

火花会话

spark = SparkSession.builder().appName("SparkCassandraApp")
                .config("spark.cassandra.connection.host", cassandraContactPoints)
                .config("spark.cassandra.connection.port", cassandraPort)
                .config("spark.cassandra.auth.username", userName).config("spark.cassandra.auth.password", password)
                .config("spark.dynamicAllocation.enabled", "false").config("spark.shuffle.service.enabled", "false")
                .master("local[4]").getOrCreate();

属性文件:

spring.data.cassandra.contact-points=cassandra1ofdc1, cassandra2ofdc2, cassandra3ofdc3
spring.data.cassandra.port=9042

当我尝试上述场景时,我得到以下异常: 原因:

java.lang.IllegalArgumentException: requirement failed: Contact points contain multiple data centers: dc1, dc2, dc3

任何帮助将不胜感激

提前致谢。

【问题讨论】:

  • 为什么需要使用其他数据中心的节点?新的驱动程序版本使用相同的规则来选择所有操作的本地 DC

标签: spring-boot apache-spark cassandra spark-cassandra-connector spring-data-cassandra


【解决方案1】:

Spark Cassandra 连接器 (SCC) 允许仅使用来自本地数据中心的节点,由 spark.cassandra.connection.local_dc 配置参数定义,或由接触点的 DC 确定(由函数 @987654322 执行) @)。较新的 SCC 将使用来自其他 DC 的节点...

【讨论】:

  • 如果这是预期行为,我如何通过 SCC 使用其他数据中心?
  • 利用是什么意思?你想达到什么目标?
  • 我有两个 Cassandra 数据中心,每个都有 4 个节点(这些节点中的每一个也都作为 Spark 工作器工作)从我的 Spark 主机,当我提交工作时,我希望所有节点都在我要使用的数据中心。但是如果 SCC 只能与一个 Datacenter 中的节点一起工作,那么其他 Datacenter 中的节点会发生什么?
猜你喜欢
  • 2017-02-17
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 2020-11-20
相关资源
最近更新 更多