0

我正在使用 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 示例时,它给出了以下异常:

com.google.cloud.hadoop.io.bigquery.BigQueryUtils.getSchemaFromString(BigQueryUtils.java:97) 的 com.google.gson.JsonArray.getAsString(JsonArray.java:133) 的 java.lang.IllegalStateException。 cloud.hadoop.io.bigquery.BigQueryOutputFormat.getRecordWriter(BigQueryOutputFormat.java:121) at org.apache.hadoop.mapred.ReduceTask$NewTrackingRecordWriter.(ReduceTask.java:568) at 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 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190) 的 javax.security.auth.Subject.doAs(Subject.java:415) 的 .AccessController.doPrivileged(Native Method) org.apache。hadoop.mapred.Child.main(Child.java:249)

有谁知道问题是什么?

谢谢

4

1 回答 1

1

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

我们在内部进行了修复,它计划在下一个版本 (0.4.3) 中发布,可能还需要几周时间;如果您想帮助尝试临时构建,请随时与 gcp-hadoop-contact@google.com 联系,我们可以提供说明。

于 2014-07-24T01:49:17.100 回答