【问题标题】:Importing .gz files from S3 to BigQuery将 .gz 文件从 S3 导入 BigQuery
【发布时间】:2019-06-20 08:47:27
【问题描述】:

我在 S3 存储桶中找到了一堆经过 gzip 压缩的 CSV 文件,我想将它们导入 BigQuery。从文档中可以看出,BQ 可以从不同来源导入压缩数据。但是,当我配置数据传输作业时,它只允许 CSV、JSON、AVRO、PARQUET、ORC 文件格式。

为 CSV 文件格式配置传输作业并运行,它会记录以下内容:

Moving data from Amazon S3 to Google Cloud complete: Moved 64 object(s).    
Summary: succeeded 0 jobs, failed 0 jobs.

所以它似乎无论如何都不会查看 .gz 档案。

有没有一种方便的方法可以将压缩后的 CSV 文件从 S3 导入 BQ 表?

【问题讨论】:

  • 嗨,你能解决它吗?根据文档,它们支持压缩文件。
  • 是的。作业设置有问题。最终我设法导入了压缩后的 CSV。
  • @VadimTikanov 如果您按照社区精神在此处发布您的解决方案作为答案,那就太好了。
  • 坦率地说,我没有明白究竟是什么解决了这个问题。我试图重新创造这份工作,最终它奏效了。看起来我最初可能弄乱了一些复选框。所以答案是“是的,BQ 支持导入 gzipped CSV,但请务必注意作业设置”。

标签: csv amazon-s3 google-bigquery gzip


【解决方案1】:

除了从 UI 提供的 bigquery s3 数据传输之外,如果您正在寻找通过 CLI 的替代方式。您可以使用 gsutil -o 和 aws 凭据将文件复制到谷歌云存储和 bq cli 使用 schema file in json 将文件传输到 bigquery

 echo "source s3 bucket:"$source_bucket""
 echo "target gcs bucket:"$dest_bucket""
 SCHEMA="/path/to/schema/file"
 dir_data=$(gsutil -o "Credentials:aws_access_key_id=${aws_access_key_id}" \
     -o "Credentials:aws_secret_access_key=${aws_secret_access_key}" \
     ls "$source_bucket")
 echo "files to transfer "$dir_data""
 echo "transfering data into google storage $dest_bucket"
 tr_data=$(gsutil -m -o "Credentials:aws_access_key_id=${aws_access_key_id}" \
     -o "Credentials:aws_secret_access_key=${aws_secret_access_key}" \
     cp "$source_bucket"* "$dest_bucket")
 echo "bq transfer - $target_dataset"
 bq --debug_mode=true load --source_format=CSV \
     --encoding=UTF-8 --allow_jagged_rows --allow_quoted_newlines \
     --skip_leading_rows=1 "$target_table" "$dest_bucket"part-*.gz "$SCHEMA"
 echo "transfer to bq complete"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2020-02-12
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多