我正在设置一个应用程序,其中正在使用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
任何帮助将不胜感激
谢谢。
答案 0 :(得分:0)
Spark Cassandra连接器(SCC)允许仅使用来自本地数据中心的节点,该节点由spark.cassandra.connection.local_dc
配置参数定义,或者由接触点的DC确定(由功能执行) LocalNodeFirstLoadBalancingPolicy.determineDataCenter
)。较新的SCC将使用其他DC的节点...