我正在设置一个应用程序,在其中使用 Spark session 从 Cassandra 读取数据。如果我从 DC 传递一个 Cassandra 节点,我就能够从 Cassandra 读取数据。 但是我如何连接到 Spark session 中属于 3 个不同 dc 的 3 个不同的 Cassandra 节点。
这是我正在使用的代码:
Spark session
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
如有任何帮助,我们将不胜感激
提前致谢。
最佳答案
Spark Cassandra 连接器 (SCC) 允许仅使用本地数据中心的节点,这些节点可以由 spark.cassandra.connection.local_dc
配置参数定义,也可以根据接触点的 DC 确定(由函数 LocalNodeFirstLoadBalancingPolicy.defineDataCenter
执行)。 SCC 较新版本将使用其他 DC 的节点...
关于spring-boot - 如何连接到不同dc中的多个Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55828491/