我正在尝试将Spark Streaming和Spark SQL与Python API结合使用。
我有一个不断编辑的文件,它每N秒随机添加一些行。
该文件可以是JSON,XML,CSV或TXT,甚至可以是SQL表:我完全可以根据自己的情况选择最佳解决方案。
我有一定数量的字段,大约4-5。以该表为例:
+-------+------+-------+--------------------+
| event | id | alert | datetime |
+-------+------+-------+--------------------+
| reg | 1 | def1 | 06.06.17-17.24.30 |
+-------+------+-------+--------------------+
| alt | 2 | def2 | 06.06.17-17.25.11 |
+-------+------+-------+--------------------+
| mot | 3 | def5 | 06.06.17-17.26.01 |
+-------+------+-------+--------------------+
| mot | 4 | def5 | 06.06.17-17.26.01 |
+-------+------+-------+--------------------+
我想使用Spark Streaming流式传输仅新行。因此,如果我添加了2行,那么下次我只想流传输这两行而不是整个文件(已经流传输)
此外,每次找到新行时,我都希望对整个相同文件进行过滤或计算Spark SQL查询。例如,我只想选择事件"mot"
,只要它在10分钟内出现两次,并且每次文件更改和新数据到达时都必须重做此查询。
Spark Streaming和Spark SQL是否可以处理这些情况?又如何?
答案 0 :(得分:1)
读取写入目录的文件作为数据流。支持的文件格式为text,csv,json,orc,parquet。有关最新列表以及每种文件格式的受支持选项,请参见DataStreamReader界面的文档。 请注意,文件必须原子放置在给定目录中,在大多数文件系统中,这可以通过文件移动操作来实现
legacy streaming也是如此(请注意此2.2文档,但实现没有改变)
必须通过原子移动文件或将其重命名到数据目录中来在dataDirectory中创建文件。