首页 > 解决方案 > 尝试拉取大于 50KB 的消息时,PubSubPullSensor 失败

问题描述

我一直在尝试使用 Airflow 中的 PubSubPullSensor 来提取 JSON 消息并摄取到 bigquery 中,只要消息大小超过阈值,传感器就无法通过 XCOM 提取消息并推送。我知道 XCOM 有最大尺寸限制,但我们如何克服这种情况,这种情况有什么解决方法吗?

标签: google-cloud-platformairflowgoogle-cloud-pubsub

解决方案


对于您描述的场景,Google Cloud Platform 中有专门的解决方案。它是Dataflow Pub/Sub Subscription to BigQuery 模板,可让您从 Pub/Sub 读取 JSON 格式的消息并将其转换为 BigQuery 元素。

正如官方文档中所说,最大 XCom 大小为 48 KB。XComs 让任务交换消息,允许更细微的控制形式和共享状态。XComs 似乎不是为传递大量数据而设计的。

如果您希望继续使用 Airflow 解决方案并且当前 PubSubSensor 的功能不能满足您的需求,您可以使用PubSub Hook开发您的自定义传感器。

另一种解决方案是使用Cloud Functions,它可以由发布到 Pub/Sub 主题的消息触发,以及 Composer DAG 触发解决方案。当消息发布到 Pub/Sub 主题时,Cloud Function 会触发 Composer DAG。

我希望您发现上述信息有用。


推荐阅读