【问题标题】:Bq command line error in compute engine VM instance CENTOS7计算引擎 VM 实例 CENTOS7 中的 Bq 命令行错误
【发布时间】:2020-01-24 14:28:42
【问题描述】:

我正在使用 CENTOS 7 运行 VM 实例(谷歌计算引擎),每次运行 bq 命令时,我都会不断出错。我认为 bq 默认情况下在计算引擎中。


[username@instance-1 ~]$ bq
Error initializing bq client: service_account
Traceback (most recent call last):
  File "/usr/lib64/google-cloud-sdk/platform/bq/third_party/pyglib/appcommands.py", line 805, in _CommandsStart
    sys.modules['__main__'].main(GetCommandArgv())
  File "/usr/lib64/google-cloud-sdk/platform/bq/bq.py", line 6078, in main
    if FLAGS.debug_mode or FLAGS.headless:
  File "/usr/lib64/google-cloud-sdk/platform/bq/third_party/absl/flags/_flagvalues.py", line 468, in __getattr__
    raise AttributeError(name)
AttributeError: debug_mode
FATAL error in main: debug_mode
Run 'bq.py help' to get help
[username@instance-1 ~]$ bq --format=prettyjson dataset.tableid
FATAL Flags parsing error: Unknown command line flag 'use_gce_service_account'
Run 'bq.py help' to get help
[username@instance-1 ~]$ 

我的计算引擎帐户拥有对所有云 API 的完全访问权限,此外,为了确保这一点,我还在 IAM 部分添加了 bigquery admin。

我不太确定出了什么问题。

【问题讨论】:

    标签: google-cloud-platform google-bigquery google-compute-engine


    【解决方案1】:

    看看documentation

    不推荐使用 bq 授权标志。配置授权 bq 命令行工具见Authorizing Cloud SDK tools

    您还可以在本节中找到导致错误的标志:

    --use_gce_service_account

    我尝试使用 Google Cloud SDK 命令bq 在我的 linux 机器上运行,它运行良好:

    $ bq        
    Python script for interacting with BigQuery.
    
    
    USAGE: bq.py [--global_flags] <command> [--command_flags] [args]
    
    
    Any of the following commands:
      cancel, cp, extract, get-iam-policy, head, help, init, insert, load, ls, mk, mkdef, partition, query, rm, set-iam-policy, shell,
      show, update, version, wait
    

    首先,您应该将您的 Cloud SDK update 更新到最新版本(或重新安装)并再次检查。另外,请使用您的 Cloud SDK 版本更新您的帖子:

    $ gcloud info       
    Google Cloud SDK [277.0.0]
    
    Python Version: [3.7.5rc1 (default, Dec 20 2019, 17:52:56)  [GCC 8.3.0]]
    Python Location: [/usr/bin/python3]
    

    如果您在使用最新的 Cloud SDK 时遇到错误,请尝试按照 documentation 中的说明在 $HOME/.bigqueryrc 中设置 bq 的默认值。

    此外,如果没有任何帮助,我建议您检查/更新 Python。

    编辑您可以像这样在~/.bigqueryrc 文件中设置默认值:

    project_id = --my-project-id--
    

    在您最喜欢的文本编辑器中,例如 nanovim。请记住,.bigqueryrc 中的文件路径必须是完整路径。

    EDIT2看看 Cloud SDK system requirements

    它需要 Python 2.7.9 或更高版本。

    你有 2.7.5

    更新删除并重新安装 Cloud SDK 解决了问题。

    【讨论】:

    • 我之前已经进行了身份验证,并且我的服务帐户已经过身份验证。我尝试运行 gcloud 信息,我得到了这个结果Google Cloud SDK [277.0.0] Platform: [Linux, x86_64] ('Linux', 'username', '3.10.0-1062.9.1.el7.x86_64', '#1 SMP Fri Dec 6 15:49:49 UTC 2019', 'x86_64', 'x86_64') Locale: ('en_US', 'UTF-8') Python Version: [2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]] Python Location: [/usr/bin/python2] Site Packages: [Disabled] 如何访问 .bigqueryrc?能否请您提供更多指导?
    • 您可以在文档中找到“您必须首先创建一个 .bigqueryrc 文件。您可以使用您喜欢的文本编辑器来创建文件”cloud.google.com/bigquery/docs/…。例如nano ~/.bigqueryrc.
    • 我已经更新了我的答案。看起来您的问题的原因是过时的 Python。
    • 我只有这个project_id = --my-project-id-- service_account = --my-client-id--@developer.gserviceaccount.com 我会尝试删除安装cloud sdk让你知道
    • 删除旧安装重装sdk解决问题!非常感谢您的帮助!
    【解决方案2】:

    您可能有一个错误的 bash 别名或 ~/.bigqueryrc

    检查~/.bigqueryrc中的语法和正确的服务帐户文件

    【讨论】:

    • 我运行了命令,我得到了错误,bash: /home/username/.bigqueryrc: No such file or directory 我不知道如何解决这个问题。
    • 如何访问 ~/.bigqueryrc?在哪里可以找到它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多