Spark结构化流连接池

时间:2017-07-07 19:42:08

标签: apache-spark spark-streaming spark-structured-streaming

我们假设我有一些流定义如下:

1) fileName.txt   -> result after split -> fileName -> OK. 
2) textfile.txt   -> result after split -> efile. -> remove any t OR x in file name.

和一些处理逻辑如下:

Dataset<Row> allMessages = df.select(.....)
Dataset<Row> messagesOfType1 = df.select() //some unique conditions
Dataset<Row> messagesOfType2 = df.select() //some other unique conditions

正如我上面提到的,StreamingQuery firstQuery = messagesOfType1 .writeStream() .foreach(new CustomForEachWiriter(ConfigurationForType1())) // class that extends ForeachWriter[T] and save data into external RDBMS table .start(); StreamingQuery secondQuery = messagesOfType2 .writeStream() .foreach(new CustomForEachWiriter(ConfigurationForType2())) // class that extends ForeachWriter[T] and save data into external RDBMS table (may be even another database than before) .start(); 负责消息处理和存储到RDBMS中。在最简单的方法中,我可以在CustomForEachWriter中实现的专用方法中管理数据库连接。

但我并不喜欢这种方法,所以我想知道如何引入连接池。通常Connection和CustomForEachWriter没有实现DataSource接口,因此我不能简单地传递从驱动程序上的连接池中检索到的Connection(将抛出异常Serializable)。它还会看到当新数据到达时,会创建TaskNotSerialized的新对象。

请您解释一下这种结构化流媒体的正确方法是什么?

谢谢

亲切的问候

0 个答案:

没有答案