为了账号安全,请及时绑定邮箱和手机立即绑定

无法让 golang 和包 bigquery 工作以加载到大查询

无法让 golang 和包 bigquery 工作以加载到大查询

Go
婷婷同学_ 2023-05-02 10:17:08
我想弄清楚如何获得一个简单的 bq 加载命令来使用https://godoc.org/cloud.google.com/go/bigquery#Table.LoaderFrom手动运行它看起来像这样:bq load --source_format=AVRO --ignore_unknown_values --replace=true mydataset.mytable gs://mybucket/table/*在我的 golang 中使用 exec.Command() 成功运行它看起来像这样:exec.Command("bq", "load", "--source_format=AVRO", "--ignore_unknown_values",             "--replace=true", "mydataset.mytable",             "gs://mybucket/table/*")但是,在尝试加载和 job.wait 成功运行时,我无法让这个程序在没有分段错误的情况下运行它似乎在程序的 job.wait 行出现分段违规package mainimport (    "context"        "log"        "cloud.google.com/go/bigquery")func main(){    ctx := context.Background()    client, err := bigquery.NewClient(ctx, "my-project-id")    if err != nil {        // TODO: Handle error.    }    gcsRef := bigquery.NewGCSReference("gs://mybucket/table/*")    gcsRef.SourceFormat = "AVRO"    gcsRef.IgnoreUnknownValues = true    // TODO: set other options on the GCSReference.    ds := client.Dataset("mydataset")    loader := ds.Table("mytable").LoaderFrom(gcsRef)    // TODO: set other options on the Loader.    job, err := loader.Run(ctx)    if err != nil {        // TODO: Handle error.    }    status, err := job.Wait(ctx) //seg faults right here    if err != nil {        // TODO: Handle error.    }    if status.Err() != nil {        // TODO: Handle error.    }}
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

恐慌可能来自对作业变量的 nil 指针引用。

我建议包括一个log.Fatal(err)

在你所有的err!= nil街区。

这将帮助您更清楚地了解工作分配不正确的原因。

当你在 go log 中编写像这样的脚本时。Fatal 是退出程序并准确打印问题所在的好方法。

使用 go,你总是试图将错误冒泡到堆栈中,以确定代码是否应该继续执行,是否可以恢复,或者它是否只是一个致命的事情,你应该结束程序。

查看完整回答
反对 回复 2023-05-02
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信