数据流数据存储到GCS模板,javascriptTextTransformFunctionName错误

时间:2018-08-02 02:39:37

标签: google-cloud-platform google-cloud-datastore google-cloud-dataflow

我正在使用Cloud Dataflow中的Cloud Datastore to Cloud Storage文本模板。

我的python代码正确提交了请求,并使用javascriptTextTransformFunctionName在我的Google Cloud Storage存储桶中运行正确的功能。

这是正在运行的代码的最小化部分

function format(inJson) {
var output = {};
output.administrator = inJson.properties.administrator.keyValue.path[0].id;

return output;

这是我要格式化,缩减的Json,但只有“属性”的其他子级。

  "properties": {
    "administrator": {
      "keyValue": {
        "path": [
          {
            "kind": "Kind",
            "id": "5706504271298560"
          }
        ]
      }
    }
  }
}

我得到了这个例外:

java.lang.RuntimeException: 
org.apache.beam.sdk.util.UserCodeException: 
javax.script.ScriptException: TypeError: Cannot read 
property "keyValue" from undefined in <eval> at line number 5

我了解错误的含义,但我不知道为什么会发生。如果您使用format函数和那个json并通过浏览器控制台运行它,则可以轻松测试并查看它是否拉出并返回带有“ administrator”等于“ 5706504271298560”的对象。

1 个答案:

答案 0 :(得分:0)

我没有找到解决您问题的方法,但希望能对您有所帮助:

  1. 发现了this postthis one并存在相同的问题。第一个是固定安装NodeJS库,第二个是更改Java.Type()的引号类型。
  2. Nashorn official docs:使用完全限定的Java类 name 调用Java.type,然后调用返回的函数从JavaScript实例化一个类。