PySpark 结构化流:将查询的输出传递到 API 端点
PySpark Structured Streaming: Pass output of Query to API endpoint
我在结构化流中有以下数据框:
TimeStamp|Room|Temperature|
00:01:29 | 1 | 55 |
00:01:34 | 2 | 51 |
00:01:36 | 1 | 56 |
00:02:03 | 2 | 49 |
我正在尝试检测温度何时低于特定温度(在本例中为 50)。我有那部分查询工作。现在,我需要通过这样的 POST 调用将此信息传递给 API 端点:'/api/lowTemperature/' 以及请求正文中的时间戳和温度。所以,在上面的例子中,我需要一起发送:
POST /api/lowTemperature/2
BODY: { "TimeStamp":"00:02:03",
"Temperature":"49" }
知道如何使用 PySpark 实现这一点吗?
我想到的一种方法是使用自定义流式接收器,但是,我似乎找不到任何关于使用 Python 实现此目的的文档。
在我最初回复的时候,ForeachWriter was only supported for Java/Scala, however, it now supports Python也是。
请务必阅读有关执行语义的部分并了解如何避免重复 API 调用(如果这是一个问题)。
好消息,因为最近为 ForeachWriter 添加了对 Python 的支持。我在 Python 中为 REST 和 Azure 事件网格创建了一个,它非常简单。
可以在此处找到(基本)文档:https://docs.databricks.com/spark/latest/structured-streaming/foreach.html#using-python
我在结构化流中有以下数据框:
TimeStamp|Room|Temperature|
00:01:29 | 1 | 55 |
00:01:34 | 2 | 51 |
00:01:36 | 1 | 56 |
00:02:03 | 2 | 49 |
我正在尝试检测温度何时低于特定温度(在本例中为 50)。我有那部分查询工作。现在,我需要通过这样的 POST 调用将此信息传递给 API 端点:'/api/lowTemperature/' 以及请求正文中的时间戳和温度。所以,在上面的例子中,我需要一起发送:
POST /api/lowTemperature/2
BODY: { "TimeStamp":"00:02:03",
"Temperature":"49" }
知道如何使用 PySpark 实现这一点吗?
我想到的一种方法是使用自定义流式接收器,但是,我似乎找不到任何关于使用 Python 实现此目的的文档。
在我最初回复的时候,ForeachWriter was only supported for Java/Scala, however, it now supports Python也是。
请务必阅读有关执行语义的部分并了解如何避免重复 API 调用(如果这是一个问题)。
好消息,因为最近为 ForeachWriter 添加了对 Python 的支持。我在 Python 中为 REST 和 Azure 事件网格创建了一个,它非常简单。 可以在此处找到(基本)文档:https://docs.databricks.com/spark/latest/structured-streaming/foreach.html#using-python