如何在不同的DC中连接到多个Cassandra

时间:2019-04-24 10:59:01

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

我正在设置一个应用程序,其中正在使用Spark会话从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

任何帮助将不胜感激

谢谢。

1 个答案:

答案 0 :(得分:0)

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