【发布时间】:2018-10-29 02:03:07
【问题描述】:
我遇到了一些难以调试的奇怪错误。我正在运行一个简单的 UDF JavaScript 映射器,它映射 JSON 数据并将其导入 BigQuery。我之前运行过其他 UDF 函数,从未遇到过此类错误。
有什么方法可以调试(使用实际调试器或至少使用 console.log 或类似工具)Dataflow 模板 UDF 错误?
有问题的错误:
exception: "java.lang.RuntimeException: org.apache.beam.sdk.util.UserCodeException: java.lang.RuntimeException: java.lang.RuntimeException: org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
at com.google.cloud.dataflow.worker.GroupAlsoByWindowsParDoFn$1.output(GroupAlsoByWindowsParDoFn.java:183)
at com.google.cloud.dataflow.worker.GroupAlsoByWindowFnRunner$1.outputWindowedValue(GroupAlsoByWindowFnRunner.java:101)
at com.google.cloud.dataflow.worker.util.BatchGroupAlsoByWindowReshuffleFn.processElement(BatchGroupAlsoByWindowReshuffleFn.java:54)
at com.google.cloud.dataflow.worker.util.BatchGroupAlsoByWindowReshuffleFn.processElement(BatchGroupAlsoByWindowReshuffleFn.java:37)
at com.google.cloud.dataflow.worker.GroupAlsoByWindowFnRunner.invokeProcessElement(GroupAlsoByWindowFnRunner.java:114)
...
很难说这个错误是关于什么的:这个输入数据是格式错误还是从 UDF 输出 JSON?
到目前为止,我已经尝试了所有方法:
- 使用示例数据在本地对 UDF 进行单元测试
- 使用我尝试在真实环境中分析的完全相同的文件运行集成测试
- 在输入中使用了空 JSON(带有空对象
{}) - 使用了返回空 JSON 对象的 UDF 函数
非常感谢任何有关调试 Dataflow UDF Javascript 的提示。
这些 Java 类的源代码是否可以在线获得?
【问题讨论】:
标签: google-bigquery google-cloud-dataflow