Google bigquery 将数据流模板GCS调试到BigQuery

Google bigquery 将数据流模板GCS调试到BigQuery,google-bigquery,google-cloud-dataflow,Google Bigquery,Google Cloud Dataflow,我遇到了一些难以调试的奇怪错误。我正在运行一个简单的UDF JavaScript映射器,它映射JSON数据并将其导入BigQuery。我以前运行过其他UDF函数,从未遇到过这样的错误 是否有任何方法(使用实际的调试器或至少使用console.log或类似工具)调试数据流模板UDF错误 有关错误: 异常:“java.lang.RuntimeException:org.apache.beam.sdk.util.UserCodeException:java.lang.RuntimeException

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

是否有任何方法(使用实际的调试器或至少使用console.log或类似工具)调试数据流模板UDF错误

有关错误:

异常:“java.lang.RuntimeException:org.apache.beam.sdk.util.UserCodeException:java.lang.RuntimeException:java.lang.RuntimeException:org.json.jsoneException:JSONObject文本必须在1处以“{”开头[字符2第1行]
位于com.google.cloud.dataflow.worker.GroupAlsoByWindowsParDoFn$1.output(GroupAlsoByWindowsParDoFn.java:183)
位于com.google.cloud.dataflow.worker.GroupAlsoByWindowFnRunner$1.outputWindowedValue(GroupAlsoByWindowFnRunner.java:101)
位于com.google.cloud.dataflow.worker.util.BatchGroupAlSobyIndowerShufflefn.processElement(BatchGroupAlSobyIndowerShufflefn.java:54)
位于com.google.cloud.dataflow.worker.util.BatchGroupAlSobyIndowerShufflefn.processElement(BatchGroupAlSobyIndowerShufflefn.java:37)
位于com.google.cloud.dataflow.worker.GroupAlsoByWindowFnRunner.invokeproceselement(GroupAlsoByWindowFnRunner.java:114)
...

很难说这个错误是关于什么的:这是格式错误的输入数据还是从UDF输出JSON?

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

  • 使用样本数据对UDF进行局部单元测试
  • 使用我试图在真实环境中分析的完全相同的文件运行集成测试
  • 在输入上使用空JSON(使用空对象
    {}
  • 使用返回空JSON对象的UDF函数
任何关于调试数据流UDF Javascript的提示都将不胜感激


这些Java类的源代码是否在任何在线位置都可用?

在本例中,罪魁祸首是BigQuery模式,需要将其包装到JSON对象中:

{
  "BigQuery Schema": [
    ... schema goes here
  ]
}
以下代码可能对调试有用:


请参阅repo:

从云控制台将示例模式复制到云存储上的文本文件到BigQuery模板时要小心:它会带来
BigQuery模式
,单词之间有两个空格

我收到了一个
java.lang.RuntimeException:org.json.jsoneException:JSONObject[“BigQuery Schema”]未找到
多次,然后才弄清楚发生了什么,使用了一个基于这样一个云控制台示例的模式…

对我来说也很有效!不需要将数组命名为“BigQuery Schema”,但[template instructions]()一定要说这个名字是必需的,所以很容易漏掉。