为什么从 Cassandra table 读取数据集时 Spark 应用程序的执行时间比本地文件更长?
Why does Spark application takes longer to execute when reading dataset from Cassandra table than local file?
我有如下代码,生成结果后应用程序立即结束
def textProcess(sc: SparkContext) {
val baseRDD = sc.textFile("C:\myDrive\test.log")
val result = baseRDD.map { x => x }.reduce((accum, current) => accum)
println(result)
sc.close()
}
但是当我 运行 使用 spark-cassandra-connector 针对 Cassandra 的以下代码时,应用程序仅在大约 10 秒延迟。
def dbProcess(sc: SparkContext) {
val baseRDD = sc.cassandraTable("local_test", "configurations")
val result = baseRDD.map { x => x.getString("keyname") }.reduce((accum,current) => accum)
println(result)
sc.close()
}
版本详情
Spark 版本为 1.6.x
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>dse-driver</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.0.2</version>
</dependency>
我的问题是,为什么在处理 spark-cassandra-connector 时会出现这种延迟?有什么办法可以避免这种延迟?还是版本问题?(我尝试了几个其他版本,但结果完好无损)
why this delay when dealing with spark-cassandra-connector?
基本上,差异归结为以下两行:
sc.textFile("C:\myDrive\test.log")
和
sc.cassandraTable("local_test", "configurations")
前者访问本地文件的成本相对较低,而后者访问远程 Cassandra 集群是一项相当繁重的网络操作。
抛开 Cassandra 集群的性能不谈,网络访问肯定比访问本地文件更耗时,不是吗?
我有如下代码,生成结果后应用程序立即结束
def textProcess(sc: SparkContext) {
val baseRDD = sc.textFile("C:\myDrive\test.log")
val result = baseRDD.map { x => x }.reduce((accum, current) => accum)
println(result)
sc.close()
}
但是当我 运行 使用 spark-cassandra-connector 针对 Cassandra 的以下代码时,应用程序仅在大约 10 秒延迟。
def dbProcess(sc: SparkContext) {
val baseRDD = sc.cassandraTable("local_test", "configurations")
val result = baseRDD.map { x => x.getString("keyname") }.reduce((accum,current) => accum)
println(result)
sc.close()
}
版本详情
Spark 版本为 1.6.x
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>dse-driver</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.0.2</version>
</dependency>
我的问题是,为什么在处理 spark-cassandra-connector 时会出现这种延迟?有什么办法可以避免这种延迟?还是版本问题?(我尝试了几个其他版本,但结果完好无损)
why this delay when dealing with spark-cassandra-connector?
基本上,差异归结为以下两行:
sc.textFile("C:\myDrive\test.log")
和
sc.cassandraTable("local_test", "configurations")
前者访问本地文件的成本相对较低,而后者访问远程 Cassandra 集群是一项相当繁重的网络操作。
抛开 Cassandra 集群的性能不谈,网络访问肯定比访问本地文件更耗时,不是吗?