我想知道在Lazy模式下加载cassandra表然后使用where子句是否是一个好习惯。
例如:
Lazy val table = sparkContext.cassandraTable[Type](keyspace,tableName)
---代码的其他部分---
table.where("column = ?",param)
谢谢!
答案 0 :(得分:3)
默认情况下,所有RDD都是懒惰的。在你召集行动之前,他们实际上不会做任何事情。所以不要添加延迟,因为这只会延迟围绕RDD创建元数据而不会实际影响执行。
实施例
val table = sparkContext.cassandraTable[Type](keyspace,tableName)
val tableWithWhere = table.where("x = 5")
val tableTransformed = table.map( x:Type => turnXIntoY(x) )
//nothing has happened in C* or Spark on executors yet
tableTransformed.collect // This causes spark to start doing work