将从joinWithCassandraTable获取的CassandraRow转换为DataFrame

时间:2018-04-11 13:09:44

标签: apache-spark cassandra spark-cassandra-connector

case class SourcePartition(id: String, host:String ,bucket: Int)
joinedRDDs =partitions.joinWithCassandraTable("db_name","table_name")
joinedRDDs.values.foreach(println)

我必须使用joinWithCassandraTable,如何将结果CassandraRow转换为DataFrame? OR是否有与DataFrame相同的joinWithCassandraTable?

我必须一次性阅读很多分区,我知道Datastax Cassandra连接器谓词下推,但它允许一次只拉一个分区(它似乎不允许IN运算符,仅=似乎得到了支持)

1 个答案:

答案 0 :(得分:0)

val spark: SparkSession = SparkSession.builder().master("local[4]").appName("RDD2DF").getOrCreate()
    val sc: SparkContext = spark.sparkContext

    import spark.implicits._

    val internalJoinRDD = spark.sparkContext.cassandraTable("test", "test_table_1").joinWithCassandraTable("test", "table_table_2")
    internalJoin.toDebugString

    internalJoinRDD.toDF()

您可以尝试上面的代码段吗?

如果您有数据架构,可以使用

def createDataFrame(internalJoinRDD: RDD[Row], schema: StructType): DataFrame