Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spark worker如何在cassandra集群中分配负载?_Cassandra_Apache Spark_Datastax_Partition - Fatal编程技术网

spark worker如何在cassandra集群中分配负载?

spark worker如何在cassandra集群中分配负载?,cassandra,apache-spark,datastax,partition,Cassandra,Apache Spark,Datastax,Partition,我试图了解卡桑德拉和斯帕克是如何合作的,尤其是在 数据分布在各个节点上 我有cassandra+spark设置,带有使用DSE的两节点群集 模式是 CREATE KEYSPACE foo WITH replication = {'class': 'SimpleStrategy','replication_factor':1} CREATE TABLE bar ( customer text, start timestamp, offset bigint, dat

我试图了解卡桑德拉和斯帕克是如何合作的,尤其是在 数据分布在各个节点上

我有cassandra+spark设置,带有使用DSE的两节点群集

模式是

CREATE KEYSPACE foo WITH replication = {'class': 'SimpleStrategy','replication_factor':1}

CREATE TABLE bar (
    customer text,
    start timestamp,
    offset bigint,
    data blob,
    PRIMARY KEY ((customer, start), offset)
)
我用大量的测试数据填充了表格。后来找到了钥匙 在“nodetool getendpoints”命令的帮助下位于不同的节点上。 例如,在我的案例中,日期为“2014-05-25”的特定客户数据处于打开状态 节点1和“2014-05-26”为节点2

当我从spark shell运行以下查询时,我看到spark worker在 node1正在mapPartitions阶段运行该任务

csc.setKeyspace("foo")
val query = "SELECT cl_ap_mac_address FROM bar WHERE customer='test' AND start IN ('2014-05-25')"
val srdd = csc.sql(query)
srdd.count()
对于下面的查询,node2上的spark worker正在运行该任务

csc.setKeyspace("foo")
val query = "SELECT cl_ap_mac_address FROM bar WHERE customer='test' AND start IN ('2014-05-26')"
val srdd = csc.sql(query)
srdd.count()
但当我给出这两个日期时,只有一个节点工作者得到了利用

csc.setKeyspace("foo")
val query = "SELECT cl_ap_mac_address FROM bar WHERE customer='test' AND start IN ('2014-05-25', '2014-05-26')"
val srdd = csc.sql(query)
srdd.count()
我在想,在这个过程中,应该同时使用两个节点
地图分割阶段。我遗漏了什么。

我想你是在试图理解spark和Cassandra之间的相互作用以及Cassandra中的数据分布

基本上,从spark应用程序,将向Cassandra节点之一发出请求,该节点充当特定客户端请求的协调器。可以在这里找到


此外,将仅由Cassandra系统负责。

这是因为复制系数。复制系数为1表示一个节点上每行只有一个副本。但这两个日期在不同的节点上。