是否可以将流媒体DStream
转换为Process p = pb.start();
?如果是这样,怎么样?
我知道如何将其转换为RDD,但它是在流式上下文中。
答案 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可转换为数据集,但是这种隐式转换Dataset
或toDF
。
因此,将toDS
转换为流DStream
的逻辑如下:
Dataset