Struct Streaming是底层基于SparkSQL引擎的、可扩容和容错的流处理引擎。允许我们利用处理静态数据的方式来处理我们的流计算。随着流数据的不断流入,Sparksql引擎会增量的连续不断的处理并且更新结果。可以使用DataSet/DataFrame的API进行 streaming aggregations, event-time windows, stream-to-batch joins等等。计算的执行也是基于优化后的sparksql引擎。通过checkpointing and Write Ahead Logs该系统可以保证点对点,一次处理,容错担保。
source和sink。
1 source
目前支持的source有三种:
File Sourcec:从给定的目录读取数据,目前支持的格式有text,csv,json,parquet。容错。
Kafka Source:从kafka拉取数据。仅兼容kafka 0.10.0或者更高版本。容错。
Socket Source(for testing):从一个连接中读取UTF8编码的文本数据。不容错。
2 output modes与查询类型
Append mode(default):仅仅从上次触发计算到当前新增的行会被输出到sink。仅仅支持行数据插入结果表后不进行更改的query操作。因此,这种方式能保证每行数据仅仅输出一次。例如,带有Select,where,map,flatmap,filter,join等的query操作支持append模式。
Complete mode:每次trigger都会将整个结果表输出到sink。这个是针对聚合操作的。
Updata mode:仅仅是自上次trigger之后结果表有变更的行会输出到sink。在以后的版本中会有更详细的信息。