问题标签 [spark-cassandra-connector]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cassandra - Spark Cassandra 迭代查询
我通过 Spark Cassandra 连接器应用以下内容:
考虑到我总是更改的唯一参数是“link_id”,我想问是否有办法更有效地应用上述查询序列。
'link_id' 值是我的 Cassandra 'records' 表的唯一分区键。我正在使用 Cassandra v.2.0.13、Spark v.1.2.1 和 Spark-Cassandra Connector v.1.2.1
我在想是否可以打开 Cassandra 会话以应用这些查询并仍然将“link_speed_records”作为 SparkRDD。
java - 在 spark 中对 JavaRDD 使用 collect() 时,应用程序变慢
我正在使用带有 spark-Cassandra-connector 的 Apache Spark 进行数据分析。为此,我从 Cassandra 创建了一个包含超过 300 万条记录的表的 JavaRDD。
过滤后它不会返回任何行。所以当我申请时,
将其计数显示为 0 大约需要 2 分钟。这种行为是预期的,还是我这边有任何可能的问题?
cassandra - Spark广播cassandra连接器
我正在使用 datastax 提供的 spark-cassandra-connector 1.1.0。我注意到有趣的问题,但我不确定为什么会发生这样的事情:当我广播 cassandra 连接器并尝试在执行程序上使用它时,我收到异常提示我的配置无效无法连接到 0.0.0 的 Cassandra。
示例堆栈跟踪:
但是,如果我在不广播的情况下使用它,一切正常。
对我来说也很奇怪,在驱动程序端广播值打印正确的配置,但在执行器端没有。
司机端:
执行方:
有人可以解释为什么它以这种方式工作,以及如何以一种可以在执行者方面使用的方式广播 Cassandra 连接器。
更新同样的问题出现在 1.2.3 版本的连接器中。
cassandra - Spark 中的工作是如何分配的
Spark 版本:1.4.0 Cassandra 版本:2.1.8
我正在使用 datastax Spark Cassandra 连接器来桥接 Spark 和 Cassandra。我在 Spark 中有 6 个节点与 6 个不同的工作人员一起运行。我有 2 个 Cassandra 节点来协助此操作。
我尝试了一个示例应用程序来计算列族中的行数(CassandraUtil.javaFunctions(sc).cassandraTable("keyspace","columnfamily").count())。
现在,当我将这个单一作业分派给主服务器时,该作业在 Spark 集群中的 2 个工作节点中运行(从事件时间线获取)。
问题
- 我派遣了一份工作。为什么是两个工人做的?一个工人在这里像主人一样吗?
- 我发现一名工人的反序列化时间非常长。其他工人很快完成了这项工作(1 人用了 40 秒,2 人用了 1 秒)。你能对此有所了解吗?
- 两个工人似乎都与 Cassandra 建立了联系并返回了结果。所以,在我看来,两者都在做同样的工作。你能对此有所了解吗?
- 我仍然想知道 RDD 的实现在哪里适合 Cassandra 的分布式领域。有人可以对此有所了解吗?多个工作人员如何知道他们必须处理 Cassandra 的哪个分区,例如,如果可以在 6 个工作人员之间拆分 10k 个分区?是不是全部由一名工人完成,而处理由其中 6 人完成?即使在这种情况下,所有工作人员的执行逻辑都保持不变(从 Cassandra 和进程中获取)。Spark 是如何做到这一点的?
- 想知道将 Spark 与 Cassandra 一起使用的真正优势。它是在内存管理级别还是有其他一些优势?
编辑
我添加了跑步的图片。我只有 10 个不同的分区。这是一个简单的计数操作。
我猜我的问题仍然是一个谜。
如果您看到提供的附件,我想您会有所了解。这是提交给我的火花大师的单一工作。想知道它是如何在两个不同的执行器中运行的。两个执行程序都返回相同数量的字节。因此,这表明两者都从 cassandra 获取了所有 10 个分区。如果这是它发生的方式,那么 spark 为我提供了 cassandra 什么?或者,我是否必须以其他方式获取它,以便两个不同的工作人员获取十个分区?
cassandra - 何时从 Cassandra 进行 fetch
我有一个应用程序可以触发 spark master 的工作。但是当我检查执行作业的 IP 地址时,它显示的是我的应用程序 IP,而不是 spark worker IP。因此,据我了解,对 RDD 的调用会产生一个火花工作者来工作。
但我的问题是这个。
我看到工人为 2 做某事,但为 1 什么也没做。
那么这是否意味着从 Cassandra 获取并在 1 中创建 RDD 都在应用程序中完成?
如果是这样,2 确实会触发两个工人的工作。在这种情况下,它会再次从 Cassandra 获取并处理计数吗?
有人可以澄清一下吗?
编辑
- 按照提供的答案,如果计数调用触发了工作人员的功能,那么在本地创建 RDD 的 executeSQL 有什么用?这是否通过查询创建数据的 Cassandra 数据集?如果是这种情况,来自 Cassandra 的查询会发生两次?
2.. 如果 spark 自动将 Cassandra 的 10 个分区的计算分配给 4 个 worker,谁来汇总结果?大师只是在做分配。那么它也聚合吗?
如果我不缓存RDD并进行另一个计数操作,会发生什么?将激发尝试使用先前用于特定分区的相同工作人员并附加到该节点中的结果 RDD。我认为它必须查询 Cassandra 才能再次获取此分区数据?你能提供一些澄清吗?
如果我缓存我的 RDD,会发生什么?RDD存储在worker中,它将用于所有操作?在那种情况下,这与我们将数据集存储在内存中并进行处理有何不同?让我知道这是否也是正确的。
java - Apache Spark 需要 5 到 6 分钟从 Cassandra 简单计算 10 亿行
我正在使用 Spark Cassandra 连接器。从 Cassandra 表中获取数据需要 5-6 分钟。在 Spark 中,我在日志中看到了许多任务和 Executor。原因可能是 Spark 将进程划分为许多任务!
下面是我的代码示例:
scala - 在 Cassandra 表扫描中设置 Spark 任务的数量
我有一个简单的 Spark 作业,从 5 节点 Cassandra 集群读取 500m 行,该集群始终运行 6 个任务,由于每个任务的大小,这会导致写入问题。我试过调整input_split_size,好像没有效果。目前我被迫重新分区表扫描,这并不理想,因为它很昂贵。
阅读了几篇文章后,我尝试在启动脚本(如下)中增加 num-executors,尽管这没有效果。
如果没有办法在 Cassandra 表扫描中设置任务数量,那很好,我会做的。但我有一种持续的琐碎感觉,我在这里遗漏了一些东西。
Spark 工作人员生活在 C* 节点上,这些节点是 8 核、64GB 服务器,每个服务器配备 2TB SSD。
启动脚本:
编辑 - 遵循 Piotr 的回答:
我在 sc.cassandraTable 上设置了 ReadConf.splitCount,如下所示,但这不会改变生成的任务数,这意味着我仍然需要重新分区表扫描。我开始认为我正在考虑这个错误并且重新分区是必要的。目前这项工作大约需要 1.5 小时,将表扫描重新划分为 1000 个任务,每个任务大约 10MB,从而将写入时间减少到几分钟。
apache-spark - spark worker 内存不足
我有一个 spark/cassandra 设置,我使用 spark cassandra java 连接器在表上进行查询。到目前为止,我有 1 个 spark 主节点(2 个核心)和 1 个工作节点(4 个核心)。它们在 conf/ 下都有以下 spark-env.sh:
这是我的火花执行代码:
现在我在第一个节点上启动 master spark,然后在第二个节点上启动 worker,然后我运行上面的代码。它在工作线程上创建了一个执行程序线程,但我在应用程序端日志中看到以下消息:
现在保持相同的设置,当我在主服务器上运行 spark/sbin/start-all.sh 时,它会在第一个节点上创建主实例和工作实例。同样,当我运行相同的代码并且分配的工人是这个新工人时,它工作得很好。
我的原始工作程序在与主节点不同的节点上运行可能会出现什么问题?
apache-spark - spark datasax cassandra 连接器从沉重的 cassandra 表中读取速度很慢
我是 Spark/Spark Cassandra 连接器的新手。我们在团队中第一次尝试使用 spark,我们正在使用 spark cassandra 连接器连接到 cassandra 数据库。
我写了一个查询,该查询使用了一个沉重的数据库表,我看到 Spark Task 直到对表的查询获取所有记录后才开始。
仅从数据库中获取所有记录就需要 3 个多小时。
从我们使用的数据库中获取数据。
即使所有数据都没有完成下载,有没有办法告诉 spark 开始工作?
是否可以选择告诉 spark-cassandra-connector 使用更多线程进行 fetch ?
谢谢,kokou。
scala - 使用 spark cassandra 连接器更新 Cassandra 表
我在更新键空间中的表时遇到了 scala 上的 spark cassandra 连接器的问题
这是我的一段代码
当我执行此代码时,我收到这样的错误
知道为什么会这样吗?我怎样才能解决这个问题?