输出模式中的数组导致异常

时间:2014-07-23 19:29:36

标签: google-bigquery connector google-hadoop

我正在使用Google BigQuery-Hadoop连接器关注此WordCount示例:

https://developers.google.com/hadoop/writing-with-bigquery-connector#completecode

该示例工作正常。

要在输出模式中测试数组,我通过向输出模式添加数组对象定义来改变代码中的一行:

String outputTableSchema = "[{'name': 'Word','type': 'STRING'},{'name': 'Number','type': 'INTEGER'},{'name':'Persons','mode':'REPEATED','type':'RECORD','fields':[{'name': 'name','type': 'STRING'},{'name': 'age','type': 'INTEGER'}]}]";

现在,当我运行WordCount示例时,它会出现此异常:

  

java.lang.IllegalStateException       在com.google.gson.JsonArray.getAsString(JsonArray.java:133)       在com.google.cloud.hadoop.io.bigquery.BigQueryUtils.getSchemaFromString(BigQueryUtils.java:97)       在com.google.cloud.hadoop.io.bigquery.BigQueryOutputFormat.getRecordWriter(BigQueryOutputFormat.java:121)       在org.apache.hadoop.mapred.ReduceTask $ NewTrackingRecordWriter。(ReduceTask.java:568)       在org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:637)       在org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:418)       在org.apache.hadoop.mapred.Child $ 4.run(Child.java:255)       at java.security.AccessController.doPrivileged(Native Method)       在javax.security.auth.Subject.doAs(Subject.java:415)       在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)       在org.apache.hadoop.mapred.Child.main(Child.java:249)

有谁知道这是什么问题?

谢谢

1 个答案:

答案 0 :(得分:1)

这实际上是当前版本的BigQuery连接器中的一个错误,它阻止它支持超过1个字段的内部记录。

我们内部有一个修正案,预计下一个版本(0.4.3)可能还需要几周时间。如果您想帮助尝试暂存版本,请随时与gcp-hadoop-contact@google.com联系,我们可以提供相关说明。