Skip to content

DStream输出

输出操作指定了对流数据经转化操作得到的数据所要执行的操作(例如把结果推入外部数据库或输出到屏幕上)。与sRDD中的惰性求值类似,如果一个DStream及其派生出的DStream都没有被执行输出操作,那么这些DStream就都不会被求值。如果 StreamingContext中没有设定输出操作,整个context就都不会启动。

1. 控制台输出

调用print()在运行流程序的驱动结点上打印DStream中每一批次数据的最开始10个元素。这用于开发和调试。

2. 写入文件

目前支持Txt文件保存,序列化对象文件保存和HDFS文件保存。

  • saveAsTextFiles(prefix, [suffix]):以text文件形式存储这个DStream的内容。每一批次的存储文件名基于参数中的prefix和suffix。"prefix-Time_IN_MS[.suffix]"。
  • saveAsObjectFiles(prefix, [suffix]):以Java对象序列化的方式将Stream中的数据保存为SequenceFiles. 每一批次的存储文件名基于参数中的为"prefix-TIME_IN_MS[.suffix]"。
  • saveAsHadoopFiles(prefix, [suffix]):将Stream中的数据保存为Hadoopfiles. 每一批次的存储文件名基于参数中的为"prefix-TIME_IN_MS[.suffix]"。

3. 通用RDD编码

即将函数func用于产生于stream的每一个RDD。其中参数传入的函数func应该实现将每一个RDD中数据推送到外部系统,如将RDD存入文件或者通过网络将其写入数据库。