阅读 Google Cloud Pubsub 消息并使用 Golang 写入 BigQuery



我正在使用以下代码从Google Cloud Pubsub读取数据:

pubsubmessage := pubsubio.Read(s, project, *input, &pubsubio.ReadOptions{Subscription: sub.ID()})

以及这段代码写入我的 bigquery 数据集:

bigqueryio.Write(s, project, *output, pubsubmessage)

我收到以下错误:

panic: schema type must be struct: []uint8
unable to convert []uint8/byte to schema type must be struct`

请帮助我。

我遵循这些例子:

https://github.com/apache/beam/blob/cea122724c5cd87a403684004452305ca64b3a68/sdks/go/examples/cookbook/max/max.go

https://github.com/apache/beam/blob/master/sdks/go/examples/streaming_wordcap/wordcap.go

pubsubio.Read的返回值是 Pubsub 消息的 PCollection。若要将这些内容转换为 BigQuery 行,您需要应用一个DoFn,该获取 Pubsub 消息并将其转换为 BigQuery 行。这将返回 BigQuery 行的 PCollection,您可以将其传递给bigqueryio.Write。像这样:

p := beam.NewPipeline()
s := p.Root()
pubsubmessages := pubsubio.Read(s, project, *input, &pubsubio.ReadOptions{Subscription: sub.ID()})
bigqueryrows := beam.ParDo(s, func(message []byte) string {
return ...
}, pubsubmessages)
bigqueryio.Write(s, project, *output, bigqueryrows)

...替换为将 Pubsub 消息的原始字节转换为 BigQuery 行的代码。

最新更新