在Streaming Dataset和DStream之间转换

时间:2018-03-29 14:44:23

标签: apache-spark apache-spark-sql spark-streaming spark-structured-streaming

是否可以将流媒体DStream转换为Process p = pb.start();?如果是这样,怎么样?

我知道如何将其转换为RDD,但它是在流式上下文中。

2 个答案:

答案 0 :(得分:6)

这是不可能的。结构化流和传统Spark Streaming(DStreams)使用完全不同的语义,并且彼此不兼容,因此:

  • DStream无法转换为Streaming Dataset
  • 无法将流媒体Dataset转换为DStream

答案 1 :(得分:0)

在某些情况下是可能的。

这个问题真的是另一个问题:

  

为什么有人要进行转换?有什么要解决的问题?

我只能想象只有在单个流应用程序中混合两个不同的API时才需要这种 type 转换。然后我会说这没有多大意义,因为您宁愿不这样做,也不在Spark模块级别进行转换,即将流应用程序从Spark流迁移到Spark结构化流。

Dataset是一系列Datasets的“摘要”(我使用引号是因为流Dataset和批处理isStreaming之间的区别是Dataset)。

可以将DStream转换为流Dataset,以便后者的行为与前者相同(以保持DStream的行为并假装为流{{1 }}。

在幕后,Spark Streaming(Dataset)和Spark Structured Streaming(stream DStream)的执行引擎非常相似。它们都分别“生成” RDD和数据集的微批次。而且RDD可转换为数据集,但是这种隐式转换DatasettoDF

因此,将toDS转换为流DStream的逻辑如下:

Dataset