go - DataflowRunner 无法执行
问题描述
使用 Apache Beam Go SDK 执行处理时,“Dataflow”和“DataflowRunner”不适用于“--runner”选项集。
我查看了官方的 Apache Beam 参考和 Go 手册,但我不明白原因。你能告诉我一个具体的解决方案吗?
在命令行上执行的命令
go run test.go --runner=DataflowRunner \
--project=[my-project] \
--region=[my-region] \
--temp_location=gs://[my-gs-bucket] \
--staging_location=gs://[my-gs-bucket] \
--worker_harness_container_image=apache/beam_go_sdk:lates
实际代码
package main
import (
"context"
"flag"
"reflect"
"github.com/bramp/morebeam/csvio"
"github.com/apache/beam/sdks/go/pkg/beam"
"github.com/apache/beam/sdks/go/pkg/beam/log"
"github.com/apache/beam/sdks/go/pkg/beam/x/beamx"
"github.com/apache/beam/sdks/go/pkg/beam/io/bigqueryio"
"github.com/apache/beam/sdks/go/pkg/beam/options/gcpopts"
)
type Csvdata struct {
id string
name string
age string
}
var (
BQ = "[my-project]:[my-data-set].[my-file]"
)
func main() {
flag.Parse()
beam.Init()
ctx := context.Background()
p := beam.NewPipeline()
s := p.Root()
log.Infof(ctx, "Started pipeline on scope: %s", s)
parse := csvio.Read(s, "gs://[my-gcs-bucket]", reflect.TypeOf(Csvdata{}))
if BQ != "" {
project := gcpopts.GetProject(ctx)
bigqueryio.Write(s, project, BQ, parse)
}
beamx.Run(ctx, p)
}
执行结果
2021/06/17 01:29:15 Started pipeline on scope: root
解决方案
我相信它应该是 --runner=dataflow .. 小写
推荐阅读
- caching - 缓存如何与服务器一起使用?
- c# - 无法使用 Newtonsoft 反序列化 json
- python - 部署到heroku但不是本地时,函数中缺少参数
- ffmpeg - 为什么ffmpeg在转换https m3u8流时忽略protocol_whitelist标志?
- java - 如何在 MacOS 上使用 JDBC 将 java 文件连接到 MySQL?
- spring-mvc - 在 spring web mvc 中包含静态资源不起作用
- ruby-on-rails - ruby on rails 中的 Simple_form :remember_me 复选框
- python - 当我在 python 3.6 中使用 HMAC 时,我无法将 str 连接到字节
- chef-infra - 如何更改 Chef 执行顺序?
- markdown - 全角 Markdown 表