我对spark比较陌生,我想知道在Cassandra中使用spark-streaming时的最佳实践是什么。
通常,在执行IO时,最好在Future中执行它(在Scala中)。然而,许多spark-cassandra-connector似乎是同步运行的。
例如:saveToCassandra (com.datastax.spark.connector.RDDFunctions)
为什么这些函数不是异步的,有什么好的原因吗?我应该用Future把它们包装起来吗?
发布于 2016-07-03 21:37:12
虽然在某些合法的情况下,您可以从驱动程序代码的异步执行中获益,但这并不是一般规则。你必须记住,驱动程序本身并不是执行实际工作的地方,特别是Spark执行是不同类型的约束的主题:
与资源分配和DAG拓扑相关的
此外,把像saveToCassandra这样的操作看作IO操作是非常简单化的。Spark操作只是Spark作业的入口点,通常IO活动只是冰山一角。
如果您在每个批处理中执行多个操作,并且拥有足够的资源而不会对单个作业产生负面影响,或者您希望在驱动程序线程本身中执行某种类型的IO,那么异步执行可能会很有用。否则,你可能是在浪费时间。
https://stackoverflow.com/questions/38168390
复制相似问题