我用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
提前谢谢。
答案 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
个对象进行操作。