通过键Spark Scala连接Dstream [Document]和Rdd

时间:2018-09-01 01:41:08

标签: apache-spark spark-streaming rdd apache-spark-dataset dstream

这是我的代码:

ssc =streamingcontext(sparkcontext,Seconds(time))
spark = sparksession.builder.config(properties).getorcreate()

val Dstream1: ReceiverInputDstream[Document] =  ssc.receiverStream(properties) // Dstream1 has Id1 and other fields

val Rdd2 = spark.sql("select Id1,key from hdfs.table").rdd // RDD[Row]

有没有办法我可以加入这两个?

1 个答案:

答案 0 :(得分:0)

您首先需要将Dstream和Rdd转换为使用pairRDD。

类似的事情应该做。

val DstreamTuple = Dstream1.map(x => (x. Id1, x))
val Rdd2Tuple = Rdd2.map(x => (x. Id1, x))

完成此操作后,您只需在dstream上进行转换,然后将其加入RDD。

val joinedStream = DstreamTuple.transform(rdd =>
   rdd.leftOuterJoin(Rdd2Tuple)
)

希望这会有所帮助:)