什么是Cassandra表中的SparkSession.read()数据集<row>限制读数? (火花表演)

时间:2017-08-22 09:35:47

标签: java apache-spark cassandra

我使用org.apache.spark.sql.SparkSessionCassandra表格读取到Spark Dataset<Row>。数据集包含整个表信息,如果我在Cassandra中添加一个新行,它似乎在后台异步工作并用行更新数据集,而不再读取表。

  1. 是否有任何方法可以限制或从表中读取数据的内置限制?

  2. Dataset<Row>开始发现难以处理的Spark的大小是什么?

  3. 如果Spark表是半太字节,Cassandra处理计算的要求是什么?

  4. 如果Spark想要将大量新信息表写入Cassandra,是否会导致SparkCassandra中将其写入更多问题或Cassandra阅读它?我只是想知道哪个产品会导致数据丢失或首先崩溃。

  5. 如果有人可以告诉我SparkSession .read()在后​​台或Dataset<Row>中的确切作用以及他们需要预先形成的内容,那将非常有用。谢谢。

1 个答案:

答案 0 :(得分:1)

SparkSession.read()调用基础数据源的扫描方法。对于Cassandra来说,这是Spark Cassandra连接器。

Spark Cassandra Connector将C *令牌环拆分为块,每个块或多或少成为Spark分区。然后在每个执行程序核心中读取单个Spark分区。

解释此at Datastax Academy

的视频

Row的实际大小与稳定性非常无关,数据会被令牌范围分解,因此如果底层Cassandra数据有很大的热点,您最终也会遇到困难。这将导致非常大的Spark分区,这可能导致内存问题。通常,分布良好的C *数据库应该没有任何大小的问题。