【问题标题】:Getting BigQuery to auto detect schema让 BigQuery 自动检测架构
【发布时间】:2016-04-17 01:08:45
【问题描述】:

我正在尝试加载 csv 文件并让 BigQuery 自动创建架构。

bq load --source_format CSV -F '\t'  --skip_leading_rows=1 voterdb.voters gs://[[ redacted bucket ]]/extract.csv
BigQuery error in load operation: Error processing job 'tokyo-unity-87516:bqjob_r3682474e46ce720f_0000015421aee065_1': No schema specified on job or table.

根据https://cloud.google.com/bigquery/federated-data-sources 支持自动创建/推断架构。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    --autodetect 标志可能是您想要的。它适用于 CSV 和(换行符分隔的)JSON 输入文件。

    例如...

    bq load --source_format=NEWLINE_DELIMITED_JSON --autodetect yourdataset.yourtable inputfile.json
    

    在此处查看文档:https://cloud.google.com/bigquery/bq-command-line-tool#creatingtablefromfile

    请注意,这与联合数据源无关。

    【讨论】:

      【解决方案2】:

      如上一个答案所述,模式自动检测是联合数据源查询的一部分。在CSV and JSON schema auto-detection 标题下没有明确说明这不适用于bq load。如果您觉得文档中不清楚这一点,我强烈建议您点击该文档页面右上角的发送反馈,并详细描述这种歧义。

      至于bq load命令,根据bq load documentation,表schema是必填参数。省略它会导致您面临的错误消息。

      编辑 感谢 polleyg 的更新。在this blog post 中,宣布还应在加载时检测到模式。正如 Chris Sears 所说,--autodetect 标志应该可以满足您的需求。

      【讨论】:

      • 根据这篇博文 (cloud.google.com/blog/big-data/2016/03/…),自动模式检测也支持加载 - “这在加载时适用于 CSV、JSON 和 AVRO”
      • 这不再正确。请参阅我对--autodetect 的回答。
      【解决方案3】:

      这里是 node js 的解决方案。

      const filename = "path of file to be uploaded";
      const metadata = {
              sourceFormat: 'CSV',
              skipLeadingRows: 1,
              autodetect: true,
          };
      const dataset =await 
      bigQuery.dataset('datasetname').table('tablename').load(filename,metadata);
      

      【讨论】:

        【解决方案4】:

        您引用的每个链接 - 当您直接 query 联合数据源时,BigQuery 支持自动创建/推断架构。
        您收到的错误是来自 GCS 的 load

        【讨论】:

          猜你喜欢
          • 2017-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-06
          • 1970-01-01
          • 2021-08-10
          • 2020-04-17
          • 1970-01-01
          相关资源
          最近更新 更多