embulk-output-bigquery 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6d60f1c428336993a486d43f7d1afb065503e8d4
4
- data.tar.gz: 87a27028e74ec601ae71a951ba9634a01384915a
2
+ SHA256:
3
+ metadata.gz: 860095ce62db6591bce595ae0dc7687ef821195c4462f9542ac711e1026fe986
4
+ data.tar.gz: a44f3f2925cb502d2c9a03ca0b8af7931582b6dd0112d4f50bc40a316e6877b9
5
5
  SHA512:
6
- metadata.gz: c735a7c4665f2fd6daf1a2c13159c15bc68a31e4b8fc917385ef86757e72b6d9185e69b263d808907d6658409887ec91363a7d8462e7da8ca2a09097fbded503
7
- data.tar.gz: 5cdda4398d326eb1ad7f2bc1c6f6a73c4db429e59d8f6a8817ac90930b761d07f5f19c141d67db5a2093910172193ad54e3100402584cd39a7827ede33439630
6
+ metadata.gz: 4e89c528a2151b6a348f5b1d9a8a3f7cf2b2fe7d61a062a9d95c195255e9d3598ac529a401010b260eb5f3821ef4c1b432ac947cbda2445368dcac5a6683726d
7
+ data.tar.gz: 84f8250e8110add2c98fb2d164b11ad6307293a4172984a62e675579b8e83a5ac214e32a1a7b01c5a1fbf2f167389b10cb728eac4ecc9adb0490fdd6e453418b
data/README.md CHANGED
@@ -49,7 +49,7 @@ v0.3.x has incompatibility changes with v0.2.x. Please see [CHANGELOG.md](CHANGE
49
49
  | auto_create_table | boolean | optional | false | See [Dynamic Table Creating](#dynamic-table-creating) |
50
50
  | schema_file | string | optional | | /path/to/schema.json |
51
51
  | template_table | string | optional | | template table name. See [Dynamic Table Creating](#dynamic-table-creating) |
52
- | prevent_duplicate_insert | boolean | optional | false | See [Prevent Duplication] (#prevent-duplication) |
52
+ | prevent_duplicate_insert | boolean | optional | false | See [Prevent Duplication](#prevent-duplication) |
53
53
  | job_status_max_polling_time | int | optional | 3600 sec | Max job status polling time |
54
54
  | job_status_polling_interval | int | optional | 10 sec | Job status polling interval |
55
55
  | is_skip_job_result_check | boolean | optional | false | Skip waiting Load job finishes. Available for append, or delete_in_advance mode |
@@ -315,7 +315,7 @@ However, this plugin is written in jruby, and jruby plugins are slower than java
315
315
 
316
316
  Therefore, it is recommended to format records with filter plugins written in Java such as [embulk-filter-to_json](https://github.com/civitaspo/embulk-filter-to_json) as:
317
317
 
318
- ```
318
+ ```yaml
319
319
  filters:
320
320
  - type: to_json
321
321
  column: {name: payload, type: string}
@@ -327,7 +327,7 @@ out:
327
327
 
328
328
  Furtheremore, if your files are originally jsonl or csv files, you can even skip a parser with [embulk-parser-none](https://github.com/sonots/embulk-parser-none) as:
329
329
 
330
- ```
330
+ ```yaml
331
331
  in:
332
332
  type: file
333
333
  path_prefix: example/example.jsonl
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "embulk-output-bigquery"
3
- spec.version = "0.4.5"
3
+ spec.version = "0.4.6"
4
4
  spec.authors = ["Satoshi Akama", "Naotoshi Seo"]
5
5
  spec.summary = "Google BigQuery output plugin for Embulk"
6
6
  spec.description = "Embulk plugin that insert records to Google BigQuery."
@@ -1 +1 @@
1
- config_csv.yml
1
+ example/config_csv.yml
@@ -1 +1 @@
1
- config_replace.yml
1
+ example/config_replace.yml
@@ -1 +1 @@
1
- config_guess_with_column_options.yml
1
+ example/config_guess_with_column_options.yml
@@ -1 +1 @@
1
- config_replace.yml
1
+ example/config_replace.yml
@@ -1 +1 @@
1
- config_replace.yml
1
+ example/config_replace.yml
@@ -1 +1 @@
1
- example.csv
1
+ example/example.csv
@@ -1 +1 @@
1
- example.csv
1
+ example/example.csv
@@ -1 +1 @@
1
- example.csv
1
+ example/example.csv
@@ -1 +1 @@
1
- example.csv
1
+ example/example.csv
@@ -1 +1 @@
1
- example.csv
1
+ example/example.csv
@@ -1 +1 @@
1
- example.csv
1
+ example/example.csv
@@ -120,8 +120,8 @@ module Embulk
120
120
  end
121
121
 
122
122
  task['auth_method'] = task['auth_method'].downcase
123
- unless %w[private_key json_key compute_engine].include?(task['auth_method'])
124
- raise ConfigError.new "`auth_method` must be one of private_key, json_key, compute_engine"
123
+ unless %w[private_key json_key compute_engine application_default].include?(task['auth_method'])
124
+ raise ConfigError.new "`auth_method` must be one of private_key, json_key, compute_engine, application_default"
125
125
  end
126
126
  if task['auth_method'] == 'private_key' and task['p12_keyfile'].nil?
127
127
  raise ConfigError.new "`p12_keyfile` is required for auth_method private_key"
@@ -8,6 +8,8 @@ module Embulk
8
8
  module Output
9
9
  class Bigquery < OutputPlugin
10
10
  class BigqueryClient < GoogleClient
11
+ BIGQUERY_TABLE_OPERATION_INTERVAL = 2 # https://cloud.google.com/bigquery/quotas
12
+
11
13
  def initialize(task, schema, fields = nil)
12
14
  scope = "https://www.googleapis.com/auth/bigquery"
13
15
  client_class = Google::Apis::BigqueryV2::BigqueryService
@@ -52,7 +54,11 @@ module Embulk
52
54
  retries = 0
53
55
  begin
54
56
  yield
55
- rescue BackendError, InternalError => e
57
+ rescue BackendError, InternalError, RateLimitExceeded => e
58
+ if e.is_a?(RateLimitExceeded)
59
+ sleep(BIGQUERY_TABLE_OPERATION_INTERVAL)
60
+ end
61
+
56
62
  if retries < @task['retries']
57
63
  retries += 1
58
64
  Embulk.logger.warn { "embulk-output-bigquery: retry \##{retries}, #{e.message}" }
@@ -319,6 +325,8 @@ module Embulk
319
325
  raise BackendError, msg
320
326
  elsif _errors.any? {|error| error.reason == 'internalError' }
321
327
  raise InternalError, msg
328
+ elsif _errors.any? {|error| error.reason == 'rateLimitExceeded' }
329
+ raise RateLimitExceeded, msg
322
330
  else
323
331
  Embulk.logger.error { "embulk-output-bigquery: #{msg}" }
324
332
  raise Error, msg
@@ -8,6 +8,7 @@ module Embulk
8
8
  class NotFoundError < Error; end
9
9
  class BackendError < Error; end
10
10
  class InternalError < Error; end
11
+ class RateLimitExceeded < Error; end
11
12
 
12
13
  class GoogleClient
13
14
  def initialize(task, scope, client_class)
@@ -69,8 +69,6 @@ module Embulk
69
69
  assert_equal "%Y-%m-%d %H:%M:%S.%6N", task['default_timestamp_format']
70
70
  assert_equal nil, task['payload_column']
71
71
  assert_equal nil, task['payload_column_index']
72
- assert_equal 300, task['timeout_sec']
73
- assert_equal 300, task['open_timeout_sec']
74
72
  assert_equal 5, task['retries']
75
73
  assert_equal "Embulk BigQuery plugin", task['application_name']
76
74
  # assert_equal "/tmp/embulk_output_bigquery_20160228-27184-pubcn0", task['path_prefix']
metadata CHANGED
@@ -1,81 +1,81 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-bigquery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Satoshi Akama
8
8
  - Naotoshi Seo
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-04 00:00:00.000000000 Z
12
+ date: 2018-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: google-api-client
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
17
  - - ">="
19
18
  - !ruby/object:Gem::Version
20
19
  version: '0'
21
- type: :runtime
20
+ name: google-api-client
22
21
  prerelease: false
22
+ type: :runtime
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: time_with_zone
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
31
  - - ">="
33
32
  - !ruby/object:Gem::Version
34
33
  version: '0'
35
- type: :runtime
34
+ name: time_with_zone
36
35
  prerelease: false
36
+ type: :runtime
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: embulk
44
43
  requirement: !ruby/object:Gem::Requirement
45
44
  requirements:
46
45
  - - ">="
47
46
  - !ruby/object:Gem::Version
48
47
  version: 0.8.2
49
- type: :development
48
+ name: embulk
50
49
  prerelease: false
50
+ type: :development
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: 0.8.2
56
56
  - !ruby/object:Gem::Dependency
57
- name: bundler
58
57
  requirement: !ruby/object:Gem::Requirement
59
58
  requirements:
60
59
  - - ">="
61
60
  - !ruby/object:Gem::Version
62
61
  version: 1.10.6
63
- type: :development
62
+ name: bundler
64
63
  prerelease: false
64
+ type: :development
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: 1.10.6
70
70
  - !ruby/object:Gem::Dependency
71
- name: rake
72
71
  requirement: !ruby/object:Gem::Requirement
73
72
  requirements:
74
73
  - - ">="
75
74
  - !ruby/object:Gem::Version
76
75
  version: '10.0'
77
- type: :development
76
+ name: rake
78
77
  prerelease: false
78
+ type: :development
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - ">="
@@ -159,7 +159,7 @@ homepage: https://github.com/embulk/embulk-output-bigquery
159
159
  licenses:
160
160
  - MIT
161
161
  metadata: {}
162
- post_install_message:
162
+ post_install_message:
163
163
  rdoc_options: []
164
164
  require_paths:
165
165
  - lib
@@ -174,9 +174,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
174
  - !ruby/object:Gem::Version
175
175
  version: '0'
176
176
  requirements: []
177
- rubyforge_project:
178
- rubygems_version: 2.5.2
179
- signing_key:
177
+ rubyforge_project:
178
+ rubygems_version: 2.6.11
179
+ signing_key:
180
180
  specification_version: 4
181
181
  summary: Google BigQuery output plugin for Embulk
182
182
  test_files: