并行化resultSet

时间:2015-02-16 17:54:38

标签: scala apache-spark

我用cassandra使用spark并执行了这个脚本:

import com.datastax.spark.connector.cql.CassandraConnector

val cc = CassandraConnector(sc.getConf)
val select = s"SELECT channel, ctid, cvid , WRITETIME(source) FROM "+CASSANDRA_SCHEMA+"."+table+";"


val session = cc.openSession()
val results = session.execute(select)  

PS:由于WRITETIME(source),我有义务使用这种方法。 但是results val是一个resultSet,我想知道是否可以并行化这个resultSet以获得RDD

提前谢谢。

1 个答案:

答案 0 :(得分:1)

'结果'是ResultSet的实例,无法直接在RDD中转换。 首先,您需要通过请求all元素来实现完整的集合:

val collection = results.all

这仍然没有帮助,因为结果是java.util.List,我们需要一个Scala集合。一个简单的转换将有所帮助:

val sCollection = collection.asScala

现在,只需使用sparkContext parallelize方法对其进行并行化:

val rdd = sc.parallelize(sCollection)

从那里,您可以对此集合的Row个对象进行操作。