将大量JSON文件从GoogleCloudStorage加载到GoogleBigQuery

时间:2016-06-17 20:08:19

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

我通过ruby scipt从PostgreSQL中清除日志数据并存储到GoogleCloudStorage中。 每个文件有10000个用户数据,文件总数超过100000.Belows是文件的一部分。 part of the files

我将每个文件下载到本地计算机并将gzip过滤为JSON for BigQuery,如
jq -c ".[]" ~/Downloads/1-10000 > ~/Downloads/1-10000.json
并且bq load --source_format=NEWLINE_DELIMITED_JSON userdata.user_logs_1-10000 gs://user-logs/1-10000 schema.json用手工制作BigQuery.It成功,但这不是聪明的方式,我不能重复这一点。

将大量gzip文件解析为json并立即加载到BigQuery中的最佳方法是什么。

我对所有建议持开放态度。谢谢。

1 个答案:

答案 0 :(得分:1)

我意识到有3个步骤。 (如果我错了,请告诉我。)

  1. 下载gzip文件
  2. 将gzip解压缩为json
  3. 上传到BigQuery
  4. 您可以尝试yajl-ruby gem来完成前两个步骤。

    require 'uri'
    require 'yajl/gzip'
    require 'yajl/deflate'
    require 'yajl/http_stream'
    
    url = URI.parse("http://example.com/foo.json")
    results = Yajl::HttpStream.get(url)
    

    并查看BigBrodaBigQuery。我之前从未使用过Google BigQuery,我不知道哪一个有效。你必须自己尝试一下。

    这是一个例子:

    bq = BigQuery::Client.new(opts)
    bq.insert('table_name', results)
    

    如果使用多线程或多处理,那将会很有帮助,因为你有大量的文件。

相关问题