C++ YT Wrapper
C++ library for working with YT clusters
Loading...
Searching...
No Matches
cypress.h
Go to the documentation of this file.
1#pragma once
2
7
8#include "fwd.h"
9
11#include "common.h"
12#include "node.h"
13
14#include <util/generic/maybe.h>
15
16namespace NYT {
17
19
22{
23public:
24 virtual ~ICypressClient() = default;
25
40 virtual TNodeId Create(
41 const TYPath& path,
42 ENodeType type,
43 const TCreateOptions& options = TCreateOptions()) = 0;
44
56 template <typename TRowType>
57 TNodeId CreateTable(
58 const TYPath& path,
59 const TSortColumns& sortColumns = TSortColumns(),
60 const TCreateOptions& options = TCreateOptions());
61
66 virtual void Remove(
67 const TYPath& path,
68 const TRemoveOptions& options = TRemoveOptions()) = 0;
69
74 virtual bool Exists(
75 const TYPath& path,
76 const TExistsOptions& options = TExistsOptions()) = 0;
77
82 virtual TNode Get(
83 const TYPath& path,
84 const TGetOptions& options = TGetOptions()) = 0;
85
90 virtual void Set(
91 const TYPath& path,
92 const TNode& value,
93 const TSetOptions& options = TSetOptions()) = 0;
94
104 virtual void MultisetAttributes(
105 const TYPath& path,
106 const TNode::TMapType& attributes,
108
118 virtual TNode::TListType List(
119 const TYPath& path,
120 const TListOptions& options = TListOptions()) = 0;
121
126 virtual TNodeId Copy(
127 const TYPath& sourcePath,
128 const TYPath& destinationPath,
129 const TCopyOptions& options = TCopyOptions()) = 0;
130
135 virtual TNodeId Move(
136 const TYPath& sourcePath,
137 const TYPath& destinationPath,
138 const TMoveOptions& options = TMoveOptions()) = 0;
139
144 virtual TNodeId Link(
145 const TYPath& targetPath,
146 const TYPath& linkPath,
147 const TLinkOptions& options = TLinkOptions()) = 0;
148
153 virtual void Concatenate(
154 const TVector<TRichYPath>& sourcePaths,
155 const TRichYPath& destinationPath,
156 const TConcatenateOptions& options = TConcatenateOptions()) = 0;
157
162 virtual void Concatenate(
163 const TVector<TYPath>& sourcePaths,
164 const TYPath& destinationPath,
165 const TConcatenateOptions& options = TConcatenateOptions());
166
171 virtual TRichYPath CanonizeYPath(const TRichYPath& path) = 0;
172
179 virtual TVector<TTableColumnarStatistics> GetTableColumnarStatistics(
180 const TVector<TRichYPath>& paths,
181 const TGetTableColumnarStatisticsOptions& options = {}) = 0;
182
190 const TVector<TRichYPath>& paths,
191 const TGetTablePartitionsOptions& options) = 0;
192
200 const TYPath& path,
201 const TVector<TFileReadRange>& ranges,
202 const TGetFilePartitionsOptions& options = {}) = 0;
203
212 virtual TMaybe<TYPath> GetFileFromCache(
213 const TString& md5Signature,
214 const TYPath& cachePath,
216
228 virtual TYPath PutFileToCache(
229 const TYPath& filePath,
230 const TString& md5Signature,
231 const TYPath& cachePath,
232 const TPutFileToCacheOptions& options = TPutFileToCacheOptions()) = 0;
233};
234
236
237template <typename TRowType>
239 const TYPath& path,
240 const TSortColumns& sortColumns,
241 const TCreateOptions& options)
242{
243 static_assert(
244 std::is_base_of_v<::google::protobuf::Message, TRowType>,
245 "TRowType must be inherited from google::protobuf::Message");
246
247 TCreateOptions actualOptions = options;
248 if (!actualOptions.Attributes_) {
249 actualOptions.Attributes_ = TNode::CreateMap();
250 }
251
252 if (!actualOptions.Attributes_->HasKey("schema")) {
253 actualOptions.Attributes_->AsMap().emplace(
254 "schema",
255 CreateTableSchema<TRowType>(sortColumns).ToNode());
256 }
257
258 return Create(path, ENodeType::NT_TABLE, actualOptions);
259}
260
262
263} // namespace NYT
Client interface to execute Cypress-related commands.
Definition cypress.h:22
virtual TNodeId Link(const TYPath &targetPath, const TYPath &linkPath, const TLinkOptions &options=TLinkOptions())=0
Create link to Cypress node.
virtual TYPath PutFileToCache(const TYPath &filePath, const TString &md5Signature, const TYPath &cachePath, const TPutFileToCacheOptions &options=TPutFileToCacheOptions())=0
Put file to file cache.
virtual void MultisetAttributes(const TYPath &path, const TNode::TMapType &attributes, const TMultisetAttributesOptions &options=TMultisetAttributesOptions())=0
Set multiple attributes for cypress path.
virtual void Set(const TYPath &path, const TNode &value, const TSetOptions &options=TSetOptions())=0
Set Cypress node contents.
virtual TMultiTablePartitions GetTablePartitions(const TVector< TRichYPath > &paths, const TGetTablePartitionsOptions &options)=0
Divide input tables into disjoint partitions.
virtual TFilePartitions GetFilePartitions(const TYPath &path, const TVector< TFileReadRange > &ranges, const TGetFilePartitionsOptions &options={})=0
Split a file into partitions according to the given byte ranges.
virtual TVector< TTableColumnarStatistics > GetTableColumnarStatistics(const TVector< TRichYPath > &paths, const TGetTableColumnarStatisticsOptions &options={})=0
Get statistics for given sets of columns in given table ranges.
virtual void Remove(const TYPath &path, const TRemoveOptions &options=TRemoveOptions())=0
Remove Cypress node.
virtual void Concatenate(const TVector< TRichYPath > &sourcePaths, const TRichYPath &destinationPath, const TConcatenateOptions &options=TConcatenateOptions())=0
Concatenate several tables into one.
virtual bool Exists(const TYPath &path, const TExistsOptions &options=TExistsOptions())=0
Check if Cypress node exists.
virtual TMaybe< TYPath > GetFileFromCache(const TString &md5Signature, const TYPath &cachePath, const TGetFileFromCacheOptions &options=TGetFileFromCacheOptions())=0
Get file from file cache.
virtual TRichYPath CanonizeYPath(const TRichYPath &path)=0
Canonize YPath, moving all the complex YPath features to attributes.
virtual TNodeId Copy(const TYPath &sourcePath, const TYPath &destinationPath, const TCopyOptions &options=TCopyOptions())=0
Copy Cypress node.
virtual TNode Get(const TYPath &path, const TGetOptions &options=TGetOptions())=0
Get Cypress node contents.
TNodeId CreateTable(const TYPath &path, const TSortColumns &sortColumns=TSortColumns(), const TCreateOptions &options=TCreateOptions())
Create table with schema inferred from the template argument.
Definition cypress.h:238
virtual TNodeId Create(const TYPath &path, ENodeType type, const TCreateOptions &options=TCreateOptions())=0
Create Cypress node of given type.
virtual TNode::TListType List(const TYPath &path, const TListOptions &options=TListOptions())=0
List Cypress map or attribute node keys.
virtual void Concatenate(const TVector< TYPath > &sourcePaths, const TYPath &destinationPath, const TConcatenateOptions &options=TConcatenateOptions())
Concatenate several tables into one.
virtual TNodeId Move(const TYPath &sourcePath, const TYPath &destinationPath, const TMoveOptions &options=TMoveOptions())=0
Move Cypress node (equivalent to copy-then-remove).
List of TSortColumn.
Definition common.h:558
Main namespace of YT client.
Definition abortable_stream.h:7
ENodeType
Type of the cypress node.
Definition client_method_options.h:22
TTableSchema CreateTableSchema(const ::google::protobuf::Descriptor &messageDescriptor, const TSortColumns &sortColumns=TSortColumns(), bool keepFieldsWithoutExtension=true)
Create table schema by protobuf message descriptor.
Options for NYT::ICypressClient::Concatenate.
Definition client_method_options.h:347
Options for NYT::ICypressClient::Copy.
Definition client_method_options.h:276
Options for NYT::ICypressClient::Create.
Definition client_method_options.h:126
Options for NYT::ICypressClient::Exists.
Definition client_method_options.h:198
File partitions from GetFilePartitions command.
Definition common.h:1351
Options for NYT::IClient::GetFileFromCache.
Definition client_method_options.h:1487
Options for NYT::IClient::GetFilePartitions.
Definition client_method_options.h:1677
Options for NYT::ICypressClient::Get.
Definition client_method_options.h:208
Options for NYT::IClient::GetTableColumnarStatistics.
Definition client_method_options.h:1593
Options for NYT::IClient::GetTablePartitions.
Definition client_method_options.h:1626
Options for NYT::ICypressClient::Link.
Definition client_method_options.h:324
Options for NYT::ICypressClient::List.
Definition client_method_options.h:258
Options for NYT::ICypressClient::Move.
Definition client_method_options.h:300
Table partitions from GetTablePartitions command.
Definition common.h:1319
Options for NYT::ICypressClient::MultisetAttributes.
Definition client_method_options.h:242
Options for NYT::IClient::GetTableColumnarStatistics.
Definition client_method_options.h:1500
Options for NYT::ICypressClient::Remove.
Definition client_method_options.h:163
Path with additional attributes.
Definition common.h:1040
Options for NYT::ICypressClient::Set.
Definition client_method_options.h:223