class SimpleBigtableClient
Constants
- VERSION
Public Class Methods
new(instance, project_id: ENV['GOOGLE_CLOUD_PROJECT'], bigtable_client: Google::Cloud::Bigtable::V2.new)
click to toggle source
# File lib/simple_bigtable_client.rb, line 5 def initialize(instance, project_id: ENV['GOOGLE_CLOUD_PROJECT'], bigtable_client: Google::Cloud::Bigtable::V2.new) @instance = instance @bigtable_client = bigtable_client @project_id = project_id end
Public Instance Methods
mutate_rows(table, column_family, enumerator, slice_size: 100_000) { |element| ... }
click to toggle source
# File lib/simple_bigtable_client.rb, line 44 def mutate_rows(table, column_family, enumerator, slice_size: 100_000) enumerator.each_slice(slice_size) do |slice| entries = slice.map do |row_key, cells| { row_key: row_key.to_s, mutations: cells.map do |column_qualifier, value| { set_cell: { column_qualifier: column_qualifier.to_s, family_name: column_family, value: value.to_s } } end } end @bigtable_client.mutate_rows(table_name(table), entries).each do |element| yield element if block_given? end end end
read_rows(table, column_family, rows: nil, filter: nil, limit: nil, options: nil) { |row| ... }
click to toggle source
# File lib/simple_bigtable_client.rb, line 11 def read_rows(table, column_family, rows: nil, filter: nil, limit: nil, options: nil) return to_enum( __method__, table, column_family, rows: rows, filter: filter, limit: limit, options: options ) unless block_given? cell_chunk_enumerator = @bigtable_client.read_rows( table_name(table), rows: rows, filter: filter, rows_limit: limit, options: options ) prev_row_key = nil row_enumerator = cell_chunk_enumerator.lazy.flat_map(&:chunks).chunk do |cell_chunk| if cell_chunk.row_key == "" prev_row_key else prev_row_key = cell_chunk.row_key end end row_enumerator.each do |row_key, cell_chunks| row = cell_chunks.each_with_object(_row_key: row_key) do |cell_chunk, acc| acc[cell_chunk.qualifier.value.to_sym] = cell_chunk.value end yield(row) end end
Private Instance Methods
table_name(table)
click to toggle source
# File lib/simple_bigtable_client.rb, line 68 def table_name(table) Google::Cloud::Bigtable::V2::BigtableClient.table_path(@project_id, @instance, table) end