将Dataflow模板GCS调试为BigQuery

时间:2018-05-18 15:20:54

标签: google-bigquery google-cloud-dataflow

我遇到一些难以调试的奇怪错误。我正在运行一个简单的UDF JavaScript映射器,它映射JSON数据并将其导入BigQuery。我以前运行过其他UDF函数,但从未遇到过这样的错误。

有没有办法调试(使用实际的调试器或至少使用console.log或类似的)数据流模板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类的源代码是否可以在线使用?

1 个答案:

答案 0 :(得分:0)

从Cloud Console将示例架构复制到Cloud Storage to BigQuery上的文本文件模板时,请小心:它带来BigQuery Schema,单词之间有两个空格。

enter image description here

我使用基于这样的Cloud Console示例的架构弄清了java.lang.RuntimeException: org.json.JSONException: JSONObject["BigQuery Schema"] not found的情况,然后才知道是怎么回事...