]> git.proxmox.com Git - ceph.git/blame - ceph/src/arrow/ruby/red-parquet/lib/parquet/arrow-table-savable.rb
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / ruby / red-parquet / lib / parquet / arrow-table-savable.rb
CommitLineData
1d09f67e
TL
1# Licensed to the Apache Software Foundation (ASF) under one
2# or more contributor license agreements. See the NOTICE file
3# distributed with this work for additional information
4# regarding copyright ownership. The ASF licenses this file
5# to you under the Apache License, Version 2.0 (the
6# "License"); you may not use this file except in compliance
7# with the License. You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing,
12# software distributed under the License is distributed on an
13# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14# KIND, either express or implied. See the License for the
15# specific language governing permissions and limitations
16# under the License.
17
18module Parquet
19 module ArrowTableSavable
20 private
21 def save_as_parquet
22 properties = WriterProperties.new
23 @options.each do |key, value|
24 next if value.nil?
25 set_method_name = "set_#{key}"
26 next unless properties.respond_to?(set_method_name)
27 case value
28 when ::Array, ::Hash
29 value.each do |path, v|
30 properties.__send__(set_method_name, v, path)
31 end
32 else
33 properties.__send__(set_method_name, value)
34 end
35 end
36 chunk_size = @options[:chunk_size] || @table.n_rows
37 open_raw_output_stream do |output|
38 ArrowFileWriter.open(@table.schema,
39 output,
40 properties) do |writer|
41 writer.write_table(@table, chunk_size)
42 end
43 end
44 end
45 end
46end
47
48module Arrow
49 class TableSaver
50 include Parquet::ArrowTableSavable
51 end
52end