我使用org.apache.spark.sql.SparkSession
将Cassandra
表格读取到Spark
Dataset<Row>
。数据集包含整个表信息,如果我在Cassandra
中添加一个新行,它似乎在后台异步工作并用行更新数据集,而不再读取表。
是否有任何方法可以限制或从表中读取数据的内置限制?
Dataset<Row>
开始发现难以处理的Spark
的大小是什么?
如果Spark
表是半太字节,Cassandra
处理计算的要求是什么?
如果Spark
想要将大量新信息表写入Cassandra
,是否会导致Spark
在Cassandra
中将其写入更多问题或Cassandra
阅读它?我只是想知道哪个产品会导致数据丢失或首先崩溃。
如果有人可以告诉我SparkSession
.read()
在后台或Dataset<Row>
中的确切作用以及他们需要预先形成的内容,那将非常有用。谢谢。
答案 0 :(得分:1)
SparkSession.read()
调用基础数据源的扫描方法。对于Cassandra来说,这是Spark Cassandra连接器。
Spark Cassandra Connector将C *令牌环拆分为块,每个块或多或少成为Spark分区。然后在每个执行程序核心中读取单个Spark分区。
的视频Row的实际大小与稳定性非常无关,数据会被令牌范围分解,因此如果底层Cassandra数据有很大的热点,您最终也会遇到困难。这将导致非常大的Spark分区,这可能导致内存问题。通常,分布良好的C *数据库应该没有任何大小的问题。