Google bigquery 输出架构中的数组导致异常

Google bigquery 输出架构中的数组导致异常,google-bigquery,connector,google-hadoop,Google Bigquery,Connector,Google Hadoop,下面是使用Google BigQuery Hadoop连接器的WordCount示例: 这个例子的效果很好 为了在输出模式中测试数组,我只修改了代码中的一行,将数组对象定义添加到输出模式中: String outputTableSchema = "[{'name': 'Word','type': 'STRING'},{'name': 'Number','type': 'INTEGER'},{'name':'Persons','mode':'REPEATED','type':'RECORD','

下面是使用Google BigQuery Hadoop连接器的WordCount示例:

这个例子的效果很好

为了在输出模式中测试数组,我只修改了代码中的一行,将数组对象定义添加到输出模式中:

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) 位于java.security.AccessController.doPrivileged(本机方法) 位于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)

有人知道问题是什么吗


谢谢

这实际上是当前版本的BigQuery connector中的一个bug,它阻止它支持包含多个字段的内部记录

我们有一个内部修复程序,计划在下一个版本(0.4.3)中发布,可能还需要几周时间;如果您想帮助尝试登台构建,请随时联系gcp hadoop-contact@google.com我们可以提供指导