谷歌云数据流错误NoSuchMethodException:没有这样的功能

问题描述 投票:0回答:0

我正在使用数据流函数将 pubsub 消息以 json 的形式转换为字符串,以提交到具有正确模式的 bigquery 表中。

我使用以下 UDF 函数,我已经测试过它可以在谷歌云 shell 中正常工作。

function networkprocess(inJson) {
  data = JSON.parse(inJson);

  data ["Network_Details"] = JSON.parse(data["Network_Details"]);
  index = data["Network_Details"]["IpAddress"].indexOf(data["source_internal_ip"]);
  if (index == -1) {
      index = 0;
    }
  for (var key in data["Network_Details"]){
      data[key] = (data["Network_Details"][key][index]);
    }
  

  delete  data ["Network_Details"];
 return JSON.stringify(data);
}

然而,此数据流作业不断将失败的记录输出到失败的记录表,并出现以下错误:

java.lang.NoSuchMethodException: No such function networkprocess at org.openjdk.nashorn.api.scripting.ScriptObjectMirror.callMember(ScriptObjectMirror.java:192) 在......

......很多“at”指针......

我已经尝试从 scracth 创建新的 UDF 以及使用谷歌在作业设置期间(在 GUI 中)单击创建 UDF 时提供的标准功能,这只是:

function process(inJson) {

 return JSON.stringify(data);
}

他们都返回相同的错误,它找不到函数。

我正在通过 GUI 或 terraform 部署它,但结果相同。

javascript google-cloud-platform google-cloud-dataflow user-defined-functions nashorn
© www.soinside.com 2019 - 2024. All rights reserved.