【问题标题】:bq load: "BigQuery error in load operation: Not found: Project ..."bq load:“加载操作中的 BigQuery 错误:未找到:项目 ...”
【发布时间】:2018-12-10 03:52:29
【问题描述】:

我正在尝试加载一些 ndjson 数据。首先,创建表格完美无缺:

> bq mk --table <project-id>:<my-dataset.newtable> newtable.schema.json
Table '<project-id>:<my-database.newtable>' successfully created.

但是,bq load 命令不会:

> bq load --source_format=NEWLINE_DELIMITED_JSON <project-id>:<my-dataset.newtable> gs://<project-id>.appspot.com/newtable.ndjson
BigQuery error in load operation: Not found: Project <project-friendly-name>

另请注意:

  • 我从 BigQuery 的网络界面运行作业没有问题。

  • 我已通过bq init 命令将&lt;project-id&gt; 设置为默认项目,但即使在创建表时,如果我没有指定它,也会出现相同的错误。

    李>

是不是有些环境变量设置不正确?

【问题讨论】:

    标签: google-bigquery google-cloud-storage gcloud


    【解决方案1】:

    bq load 命令通常遵循以下结构。

    bq --location=[LOCATION] load --source_format=[FORMAT] [DATASET].[TABLE] [PATH_TO_SOURCE] [SCHEMA]

    与标准的bq load 命令一样,如果您在已登录cli 的同一项目中加载数据,则不必提及该项目。此外,除非您在命令中设置了自动检测标志,否则您还需要提及架构。

    以下命令允许您识别您有权访问的项目。

    gcloud config list

    【讨论】:

    • 请注意,架构是在上面定义的,在使用bq mk --table [PROJECT_ID]:[DATASET].[TABLE] [SCHEMA] 创建表时,最后一个参数!
    • 非常感谢gcloud config list 命令,结果证明它真的很有用
    【解决方案2】:

    好的。有趣的是,与bq mk 不同,对于bq load,选择&lt;project-id&gt;[PROJECT_ID]:[DATASET].[TABLE],或通过bq init(以及带有完全限定云存储URI 作为文件的--location=[LOCATION] 选项)仍然无关紧要.

    我仍然必须运行:

    • gcloud config set project &lt;project-id&gt;
    • bq load --project_id=&lt;project-id&gt; ...

    • gcloud init 并选择目标项目作为默认项目。

    总而言之,这是可行的:

    bq load --project_id=<project-id> --source_format=NEWLINE_DELIMITED_JSON <my-dataset.newtable> gs://<project-id>.appspot.com/newtable.ndjson
    

    【讨论】:

      【解决方案3】:

      我对这个错误的解决方案是我必须省略bq load 命令的location=[LOCATION] 选项。我没有看到我的 GCP 项目的任何默认位置。

      【讨论】:

        【解决方案4】:

        在 2021 年 5 月,当我对超过一定大小的文件使用 bq load 时,我仍然遇到了这个问题。

        2020 年 8 月在错误跟踪器上描述的解决方法对我有用:https://github.com/googleapis/google-api-python-client/issues/1006

        具体来说,我编辑了文件~/google-cloud-sdk/platform/bq/third_party/httplib2/python3/__init__.py .

        找到这一行: REDIRECT_CODES = frozenset((300, 301, 302, 303, 307, 308)) 并从集合中删除数字 308。

        我怀疑这不是正确的解决方法,但它让我继续前进,因为它只影响 bq 命令使用的 httplib2,它希望不会产生其他有害影响,但要小心。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-17
          • 1970-01-01
          • 2016-08-23
          • 2019-07-27
          相关资源
          最近更新 更多