如何解决带有 Apache Beam 的 Google Cloud Dataflow 不显示日志
我的问题是数据流上的日志没有显示任何内容(启用了监控 api),我不知道为什么。
使用以下 Apache Beam 代码(取自 https://cloud.google.com/dataflow/docs/guides/logging),
import argparse
import logging
import re
from apache_beam.io import ReadFromText
from apache_beam.options.pipeline_options import PipelineOptions,SetupOptions
from apache_beam import FlatMap,Map,Pipeline
def run(argv=None):
parser = argparse.ArgumentParser()
parser.add_argument(
"--input",dest="input",default="gs://dataflow-samples/shakespeare/kinglear.txt",help="Input file to process.",)
known_args,pipeline_args = parser.parse_known_args(argv)
pipeline_options = PipelineOptions(pipeline_args)
pipeline_options.view_as(SetupOptions).save_main_session = True
with Pipeline(options=pipeline_options) as p:
filtered_words = (
p
| "Read" >> ReadFromText(known_args.input)
| "Split" >> FlatMap(lambda x: re.findall(r"[A-Za-z\']+",x))
| "Log" >> Map(lambda x: logging.info(f"x: {x}"))
)
if __name__ == "__main__":
logging.getLogger().setLevel(logging.INFO)
run()
在本地运行,直接运行,
...
INFO:root:x: his
INFO:root:x: enemy
INFO:root:x: king
INFO:root:x: and
INFO:root:x: did
INFO:root:x: him
...
在 Google Cloud Dataflow 上运行时,什么也没有。
这里是依赖项,
python = "^3.8"
apache-beam = {extras = ["gcp"],version = "^2.28.0"}
解决方法
原来日志路由器中的默认接收器不包括数据流日志。
使用包含过滤器 resource.type="dataflow_step"
在日志路由器中创建新接收器解决了问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。