一、DStream输出操作
### --- DStream输出操作
~~~ 输出操作定义 DStream 的输出操作。
~~~ 与 RDD 中的惰性求值类似,如果一个 DStream 及其派生出的 DStream 都没有被执行输出操作,
~~~ 那么这些 DStream 就都不会被求值。
~~~ 如果 StreamingContext 中没有设定输出操作,整个流式作业不会启动。
二、DStream输出操作参数
Output Operation | Meaning |
print() | 在运行流程序的Driver上, 输出DStream中每一批次数据的最开始10个元素。用于开发和调试 |
saveAsTextFiles(prefix,[suffix]) | 以text文件形式存储 DStream 的内容。 每一批次的存储文件名基于参数中的prefix和suffix |
saveAsObjectFiles(prefix,[suffix]) | 以Java对象序列化的方式将Stream中数据保存为Sequence Files。 每一批次的存储文件名基于参数中的为"prefix-TIME_IN_MS[.suffix]" |
saveAsHadoopFiles(prefix,[suffix]) | 将Stream中的数据保存为 Hadoop files。 每一批次的存储文件名基于参数中的为"prefix-TIME_IN_MS[.suffix]" |
foreachRDD(func) | 最通用的输出操作。将函数 func 应用于DStream 的每一个RDD上 |
### --- DSTream概述
~~~ 通用的输出操作 foreachRDD,用来对 DStream 中的 RDD 进行任意计算。
~~~ 在foreachRDD中,可以重用 Spark RDD 中所有的 Action 操作。需要注意的:
~~~ 连接不要定义在 Driver 中
~~~ 连接定义在 RDD的 foreach 算子中,则遍历 RDD 的每个元素时都创建连接,得不偿失
~~~ 应该在 RDD的 foreachPartition 中定义连接,每个分区创建一个连接
~~~ 可以考虑使用连接池