mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-22 18:32:15 +00:00
151 lines
4.8 KiB
C++
151 lines
4.8 KiB
C++
// Licensed to the Apache Software Foundation (ASF) under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
|
|
// Public API for the "Feather" file format, originally created at
|
|
// http://github.com/wesm/feather
|
|
|
|
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "arrow/ipc/options.h"
|
|
#include "arrow/type_fwd.h"
|
|
#include "arrow/util/compression.h"
|
|
#include "arrow/util/visibility.h"
|
|
|
|
namespace arrow {
|
|
|
|
class Schema;
|
|
class Status;
|
|
class Table;
|
|
|
|
namespace io {
|
|
|
|
class OutputStream;
|
|
class RandomAccessFile;
|
|
|
|
} // namespace io
|
|
|
|
namespace ipc {
|
|
namespace feather {
|
|
|
|
static constexpr const int kFeatherV1Version = 2;
|
|
static constexpr const int kFeatherV2Version = 3;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Metadata accessor classes
|
|
|
|
/// \class Reader
|
|
/// \brief An interface for reading columns from Feather files
|
|
class ARROW_EXPORT Reader {
|
|
public:
|
|
virtual ~Reader() = default;
|
|
|
|
/// \brief Open a Feather file from a RandomAccessFile interface
|
|
///
|
|
/// \param[in] source a RandomAccessFile instance
|
|
/// \return the table reader
|
|
static Result<std::shared_ptr<Reader>> Open(
|
|
const std::shared_ptr<io::RandomAccessFile>& source);
|
|
|
|
/// \brief Open a Feather file from a RandomAccessFile interface
|
|
/// with IPC Read options
|
|
///
|
|
/// \param[in] source a RandomAccessFile instance
|
|
/// \param[in] options IPC Read options
|
|
/// \return the table reader
|
|
static Result<std::shared_ptr<Reader>> Open(
|
|
const std::shared_ptr<io::RandomAccessFile>& source, const IpcReadOptions& options);
|
|
|
|
/// \brief Return the version number of the Feather file
|
|
virtual int version() const = 0;
|
|
|
|
virtual std::shared_ptr<Schema> schema() const = 0;
|
|
|
|
/// \brief Read all columns from the file as an arrow::Table.
|
|
///
|
|
/// \param[out] out the returned table
|
|
/// \return Status
|
|
///
|
|
/// This function is zero-copy if the file source supports zero-copy reads
|
|
virtual Status Read(std::shared_ptr<Table>* out) = 0;
|
|
|
|
/// \brief Read only the specified columns from the file as an arrow::Table.
|
|
///
|
|
/// \param[in] indices the column indices to read
|
|
/// \param[out] out the returned table
|
|
/// \return Status
|
|
///
|
|
/// This function is zero-copy if the file source supports zero-copy reads
|
|
virtual Status Read(const std::vector<int>& indices, std::shared_ptr<Table>* out) = 0;
|
|
|
|
/// \brief Read only the specified columns from the file as an arrow::Table.
|
|
///
|
|
/// \param[in] names the column names to read
|
|
/// \param[out] out the returned table
|
|
/// \return Status
|
|
///
|
|
/// This function is zero-copy if the file source supports zero-copy reads
|
|
virtual Status Read(const std::vector<std::string>& names,
|
|
std::shared_ptr<Table>* out) = 0;
|
|
};
|
|
|
|
struct ARROW_EXPORT WriteProperties {
|
|
static WriteProperties Defaults();
|
|
|
|
static WriteProperties DefaultsV1() {
|
|
WriteProperties props = Defaults();
|
|
props.version = kFeatherV1Version;
|
|
return props;
|
|
}
|
|
|
|
/// Feather file version number
|
|
///
|
|
/// version 2: "Feather V1" Apache Arrow <= 0.16.0
|
|
/// version 3: "Feather V2" Apache Arrow > 0.16.0
|
|
int version = kFeatherV2Version;
|
|
|
|
// Parameters for Feather V2 only
|
|
|
|
/// Number of rows per intra-file chunk. Use smaller chunksize when you need
|
|
/// faster random row access
|
|
int64_t chunksize = 1LL << 16;
|
|
|
|
/// Compression type to use. Only UNCOMPRESSED, LZ4_FRAME, and ZSTD are
|
|
/// supported. The default compression returned by Defaults() is LZ4 if the
|
|
/// project is built with support for it, otherwise
|
|
/// UNCOMPRESSED. UNCOMPRESSED is set as the object default here so that if
|
|
/// WriteProperties::Defaults() is not used, the default constructor for
|
|
/// WriteProperties will work regardless of the options used to build the C++
|
|
/// project.
|
|
Compression::type compression = Compression::UNCOMPRESSED;
|
|
|
|
/// Compressor-specific compression level
|
|
int compression_level = ::arrow::util::kUseDefaultCompressionLevel;
|
|
};
|
|
|
|
ARROW_EXPORT
|
|
Status WriteTable(const Table& table, io::OutputStream* dst,
|
|
const WriteProperties& properties = WriteProperties::Defaults());
|
|
|
|
} // namespace feather
|
|
} // namespace ipc
|
|
} // namespace arrow
|