首页 > 解决方案 > 将 Dataflow 模板 GCS 调试到 BigQuery

问题描述

我收到一些难以调试的奇怪错误。我正在运行一个简单的 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?

到目前为止,我已经尝试了所有方法:

任何有关调试 Dataflow UDF Javascript 的提示将不胜感激。

这些 Java 类的源代码是否可以在线获得?

标签: google-bigquerygoogle-cloud-dataflow

解决方案


在这种情况下,罪魁祸首原来是 BigQuery Schema,它需要被包装到 JSON 对象中:

{
  "BigQuery Schema": [
    ... schema goes here
  ]
}

以下代码可用于调试: TextIOToBigQuery.java

查看回购:https ://github.com/GoogleCloudPlatform/DataflowTemplates


推荐阅读