javascript Google Cloud数据流错误NoSuchMethodException:无此功能

vx6bjr1n  于 2023-05-16  发布在  Java
关注(0)|答案(2)|浏览(144)

我正在使用一个数据流函数来转换json格式的pubsub消息,将其写成字符串,然后提交到一个具有正确模式的bigquery表中。
我使用以下UDF函数,我已经测试过它在Google Cloud 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:没有这样的函数networkprocess at org.openjdk.nashorn.API.scripting.ScriptObjectMirror.callMember(ScriptObjectMirror.java:192)at .......
............很多“at”指针。
我已经尝试从scracth创建新的UDF,以及使用谷歌提供的标准功能,在作业设置期间(在GUI中)单击创建UDF,这只是:

function process(inJson) {

 return JSON.stringify(data);
}

如果它们都返回相同的错误,即找不到函数。
我通过GUI或Terraform部署它,但结果是一样的。

xytpbqjk

xytpbqjk1#

似乎函数没有正确加载,不知何故。
您将JavaScript文件保存在GCS存储桶中,并使用正确的路径指向它?
正在Dataflow中使用的服务帐户是否具有获取该文件的正确权限集?

tzcvj98z

tzcvj98z2#

可能听起来像一个愚蠢的建议,但也许这是谷歌方面的一些错误,你应该直接联系Google Support

相关问题