Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud dataflow 如何在apache beam管道中记录传入消息_Google Cloud Dataflow_Apache Beam_Google Cloud Pubsub_Apache Beam Io - Fatal编程技术网

Google cloud dataflow 如何在apache beam管道中记录传入消息

Google cloud dataflow 如何在apache beam管道中记录传入消息,google-cloud-dataflow,apache-beam,google-cloud-pubsub,apache-beam-io,Google Cloud Dataflow,Apache Beam,Google Cloud Pubsub,Apache Beam Io,我正在编写一个简单的ApacheBeam流媒体管道,从pubsub主题获取输入并将其存储到bigquery中。几个小时以来,我一直以为自己连一条消息都看不懂,因为我只是想把输入记录到控制台上: events=p |“读取PubSub”>>ReadFromPubSub(订阅=订阅) logging.info(事件) 当我写这篇文章时,效果很好!但是,我对记录器的调用从未发生过 人们如何开发/调试这些流式管道 我尝试添加以下行: events |“Log”>>logging.info(事件) 使用

我正在编写一个简单的ApacheBeam流媒体管道,从pubsub主题获取输入并将其存储到bigquery中。几个小时以来,我一直以为自己连一条消息都看不懂,因为我只是想把输入记录到控制台上:

events=p |“读取PubSub”>>ReadFromPubSub(订阅=订阅)
logging.info(事件)
当我写这篇文章时,效果很好!但是,我对
记录器的调用从未发生过

人们如何开发/调试这些流式管道

我尝试添加以下行:
events |“Log”>>logging.info(事件)


使用
print()
也不会在控制台中产生任何结果。

这是因为
事件
是一个
PCollection
,因此您需要对其应用

最简单的方法是对
事件应用
ParDo

events |“记录结果”>>beam.ParDo(LogResults())
定义为:

class日志结果(beam.DoFn):
“”“只需记录结果”“”
def流程(自身、要素):
logging.info(“发布/订阅事件:%s”,元素)
屈服要素

请注意,如果您想在下游应用进一步的步骤,例如在记录元素之后写入接收器,我也会生成元素。例如,请参阅问题。

当日志记录工作时,奇怪的是,这会将类型从
str
转换为
int
-
TypeError:JSON对象必须是str、bytes或bytearray,而不是int
。您可以使用更多上下文(如日志输出和完整代码)编辑问题吗?对于
yield
而不是
return
,是否也会发生同样的情况?我不打算编辑这个问题,因为这是解决方案的问题<代码>产量
工作正常-知道为什么吗?我会说你应该编辑这个解决方案。当然,如果这解决了它,那么就没有必要在问题中添加更多的细节。我已相应地编辑了答案。使用
yield
返回一个生成器这似乎会发生在任何DoFn中,如果使用return,则返回数据类型更改。。。你知道原因吗?