前面第一小节也提到了,Structured Streaming会增量的从source中读取数据,映射成一张表,对该表进行增量的查询分析,然后组合中间状态,再把结果输出到结果表,然后刷到外部存储系统sink。
本小节主要是详细讲解source 和 sink。
1. source
目前支持的内置source有:
1) File Source
从给定的目录读取数据,目前支持的格式有text,csv,json,parquet。容错,文件必须原子操作的方式放置到指定的目录下,很多文件系统支持的move操作即可实现。
path:输入目录,对所有的文件格式通用。
maxFilesPerTrigger:每次触发读取文件的最大数。
latestFirst:是否先处理最新加入的文件,当有很多文件时,该参数有用(默认是false)。
fileNameOnly:检测新文件是否只根据文件名称,而不是整个文件路径,默认是false。假如,该值设置为true,那么下列文件会被认为是同一个文件:
"file:///dataset.txt"
"s3://a/dataset.txt"
"s3n://a/b/dataset.txt"
"s3a://a/b/c/dataset.txt"
2) Kafka Source:从kafka拉取数据。仅兼容kafka 0.10.0或者更高版本。容错。
3) Socket Source(for testing):
从一个连接中读取UTF8编码的文本数据。不容错。
该source的配置主要是两个host 去链接的目标主机; port 去连接的目标端口。
4) Rate Source(for testing)