【问题标题】:Why the function works locally but doesn't work from Dataflow?为什么该函数在本地工作但在 Dataflow 中不起作用?
【发布时间】:2019-09-10 15:18:40
【问题描述】:

我正在尝试使用数据流向 Google Analytics(分析)发布请求。第一步是从 Big-query 中读取适当的参数 - 它工作正常。接下来是在 HTTP 发布请求中使用它们。在本地通过提供显式参数它可以工作,但在数据流中它在此步骤中什么也不做。

这是我的代码(SendRequests 类),其中 el - BQ 中的每个数据行。

class SendRequests(beam.DoFn):
    def __init__(self):
        super(SendRequests, self).__init__()
    def process(self, el):
        conn = httplib.HTTPConnection("www.google-analytics.com")
        params = urllib.urlencode(el)
        conn.request("POST", "/collect", params)
        yield 1

locally:
conn = http.client.HTTPConnection("www.google-analytics.com")
conn.request("POST", "/collect", params)

【问题讨论】:

标签: python google-cloud-platform apache-beam dataflow


【解决方案1】:

这可能不是“什么都不做”...检查日志文件。

此外,Dataflow 作业可能仅使用私有 IP 地址运行。如果不是这种情况,除非数据流作业和函数在同一个 VPC 中,否则将无法访问该函数。

我认为您不必启用 Google 私人访问权限,但请阅读此内容,看看是否有帮助...https://cloud.google.com/vpc/docs/private-access-options

加雷斯

【讨论】:

  • 日志中的请求状态为OK(200)。但GA中没有新数据。我启用了谷歌私人访问,但它仍然是同样的情况:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
相关资源
最近更新 更多