impala 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +22 -0
- data/README.md +28 -0
- data/Rakefile +15 -0
- data/impala.gemspec +25 -0
- data/lib/impala.rb +33 -0
- data/lib/impala/connection.rb +93 -0
- data/lib/impala/cursor.rb +86 -0
- data/lib/impala/protocol.rb +6 -0
- data/lib/impala/protocol/beeswax_constants.rb +14 -0
- data/lib/impala/protocol/beeswax_service.rb +747 -0
- data/lib/impala/protocol/beeswax_types.rb +192 -0
- data/lib/impala/protocol/data_constants.rb +12 -0
- data/lib/impala/protocol/data_sinks_constants.rb +12 -0
- data/lib/impala/protocol/data_sinks_types.rb +107 -0
- data/lib/impala/protocol/data_types.rb +77 -0
- data/lib/impala/protocol/descriptors_constants.rb +12 -0
- data/lib/impala/protocol/descriptors_types.rb +266 -0
- data/lib/impala/protocol/exprs_constants.rb +12 -0
- data/lib/impala/protocol/exprs_types.rb +345 -0
- data/lib/impala/protocol/facebook_service.rb +706 -0
- data/lib/impala/protocol/fb303_constants.rb +14 -0
- data/lib/impala/protocol/fb303_types.rb +24 -0
- data/lib/impala/protocol/frontend_constants.rb +12 -0
- data/lib/impala/protocol/frontend_types.rb +347 -0
- data/lib/impala/protocol/hive_metastore_constants.rb +52 -0
- data/lib/impala/protocol/hive_metastore_types.rb +697 -0
- data/lib/impala/protocol/impala_internal_service.rb +244 -0
- data/lib/impala/protocol/impala_internal_service_constants.rb +12 -0
- data/lib/impala/protocol/impala_internal_service_types.rb +362 -0
- data/lib/impala/protocol/impala_plan_service.rb +310 -0
- data/lib/impala/protocol/impala_plan_service_constants.rb +12 -0
- data/lib/impala/protocol/impala_plan_service_types.rb +36 -0
- data/lib/impala/protocol/impala_service.rb +260 -0
- data/lib/impala/protocol/impala_service_constants.rb +12 -0
- data/lib/impala/protocol/impala_service_types.rb +46 -0
- data/lib/impala/protocol/java_constants_constants.rb +42 -0
- data/lib/impala/protocol/java_constants_types.rb +14 -0
- data/lib/impala/protocol/opcodes_constants.rb +12 -0
- data/lib/impala/protocol/opcodes_types.rb +309 -0
- data/lib/impala/protocol/partitions_constants.rb +12 -0
- data/lib/impala/protocol/partitions_types.rb +44 -0
- data/lib/impala/protocol/plan_nodes_constants.rb +12 -0
- data/lib/impala/protocol/plan_nodes_types.rb +345 -0
- data/lib/impala/protocol/planner_constants.rb +12 -0
- data/lib/impala/protocol/planner_types.rb +78 -0
- data/lib/impala/protocol/runtime_profile_constants.rb +12 -0
- data/lib/impala/protocol/runtime_profile_types.rb +97 -0
- data/lib/impala/protocol/state_store_service.rb +244 -0
- data/lib/impala/protocol/state_store_service_constants.rb +12 -0
- data/lib/impala/protocol/state_store_service_types.rb +185 -0
- data/lib/impala/protocol/state_store_subscriber_service.rb +82 -0
- data/lib/impala/protocol/state_store_subscriber_service_constants.rb +12 -0
- data/lib/impala/protocol/state_store_subscriber_service_types.rb +67 -0
- data/lib/impala/protocol/statestore_types_constants.rb +12 -0
- data/lib/impala/protocol/statestore_types_types.rb +77 -0
- data/lib/impala/protocol/status_constants.rb +12 -0
- data/lib/impala/protocol/status_types.rb +44 -0
- data/lib/impala/protocol/thrift_hive_metastore.rb +4707 -0
- data/lib/impala/protocol/types_constants.rb +12 -0
- data/lib/impala/protocol/types_types.rb +86 -0
- data/lib/impala/version.rb +3 -0
- data/thrift/Data.thrift +52 -0
- data/thrift/DataSinks.thrift +61 -0
- data/thrift/Descriptors.thrift +115 -0
- data/thrift/Exprs.thrift +134 -0
- data/thrift/Frontend.thrift +193 -0
- data/thrift/ImpalaInternalService.thrift +265 -0
- data/thrift/ImpalaPlanService.thrift +44 -0
- data/thrift/ImpalaService.thrift +105 -0
- data/thrift/JavaConstants.thrift +60 -0
- data/thrift/Opcodes.thrift +317 -0
- data/thrift/Partitions.thrift +41 -0
- data/thrift/PlanNodes.thrift +184 -0
- data/thrift/Planner.thrift +72 -0
- data/thrift/RuntimeProfile.thrift +58 -0
- data/thrift/StateStoreService.thrift +121 -0
- data/thrift/StateStoreSubscriberService.thrift +64 -0
- data/thrift/StatestoreTypes.thrift +50 -0
- data/thrift/Status.thrift +31 -0
- data/thrift/Types.thrift +71 -0
- data/thrift/beeswax.thrift +175 -0
- data/thrift/fb303.thrift +112 -0
- data/thrift/hive_metastore.thrift +528 -0
- metadata +206 -0
@@ -0,0 +1,193 @@
|
|
1
|
+
// Copyright 2012 Cloudera Inc.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
namespace cpp impala
|
16
|
+
namespace java com.cloudera.impala.thrift
|
17
|
+
namespace rb Impala.Protocol
|
18
|
+
|
19
|
+
include "Types.thrift"
|
20
|
+
include "ImpalaInternalService.thrift"
|
21
|
+
include "PlanNodes.thrift"
|
22
|
+
include "Planner.thrift"
|
23
|
+
include "Descriptors.thrift"
|
24
|
+
|
25
|
+
// These are supporting structs for JniFrontend.java, which serves as the glue
|
26
|
+
// between our C++ execution environment and the Java frontend.
|
27
|
+
|
28
|
+
// Arguments to getTableNames, which returns a list of tables that match an
|
29
|
+
// optional pattern.
|
30
|
+
struct TGetTablesParams {
|
31
|
+
// If not set, match tables in all DBs
|
32
|
+
1: optional string db
|
33
|
+
|
34
|
+
// If not set, match every table
|
35
|
+
2: optional string pattern
|
36
|
+
}
|
37
|
+
|
38
|
+
// getTableNames returns a list of unqualified table names
|
39
|
+
struct TGetTablesResult {
|
40
|
+
1: list<string> tables
|
41
|
+
}
|
42
|
+
|
43
|
+
// Arguments to getDbNames, which returns a list of dbs that match an optional
|
44
|
+
// pattern
|
45
|
+
struct TGetDbsParams {
|
46
|
+
// If not set, match every database
|
47
|
+
1: optional string pattern
|
48
|
+
}
|
49
|
+
|
50
|
+
// getDbNames returns a list of database names
|
51
|
+
struct TGetDbsResult {
|
52
|
+
1: list<string> dbs
|
53
|
+
}
|
54
|
+
|
55
|
+
struct TColumnDesc {
|
56
|
+
1: required string columnName
|
57
|
+
2: required Types.TPrimitiveType columnType
|
58
|
+
}
|
59
|
+
|
60
|
+
// Arguments to DescribeTable, which returns a list of column descriptors for a
|
61
|
+
// given table
|
62
|
+
struct TDescribeTableParams {
|
63
|
+
1: optional string db
|
64
|
+
2: required string table_name
|
65
|
+
}
|
66
|
+
|
67
|
+
// Results of a call to describeTable()
|
68
|
+
struct TDescribeTableResult {
|
69
|
+
1: required list<TColumnDesc> columns
|
70
|
+
}
|
71
|
+
|
72
|
+
// Per-client session state
|
73
|
+
struct TSessionState {
|
74
|
+
// The default database, changed by USE <database> queries.
|
75
|
+
1: required string database
|
76
|
+
}
|
77
|
+
|
78
|
+
struct TClientRequest {
|
79
|
+
// select stmt to be executed
|
80
|
+
1: required string stmt
|
81
|
+
|
82
|
+
// query options
|
83
|
+
2: required ImpalaInternalService.TQueryOptions queryOptions
|
84
|
+
|
85
|
+
// session state
|
86
|
+
3: required TSessionState sessionState;
|
87
|
+
}
|
88
|
+
|
89
|
+
struct TResultSetMetadata {
|
90
|
+
1: required list<TColumnDesc> columnDescs
|
91
|
+
}
|
92
|
+
|
93
|
+
// Describes a set of changes to make to the metastore
|
94
|
+
struct TCatalogUpdate {
|
95
|
+
// Unqualified name of the table to change
|
96
|
+
1: required string target_table;
|
97
|
+
|
98
|
+
// Database that the table belongs to
|
99
|
+
2: required string db_name;
|
100
|
+
|
101
|
+
// List of partitions that are new and need to be created. May
|
102
|
+
// include the root partition (represented by the empty string).
|
103
|
+
3: required set<string> created_partitions;
|
104
|
+
}
|
105
|
+
|
106
|
+
// Metadata required to finalize a query - that is, to clean up after the query is done.
|
107
|
+
// Only relevant for INSERT queries.
|
108
|
+
struct TFinalizeParams {
|
109
|
+
// True if the INSERT query was OVERWRITE, rather than INTO
|
110
|
+
1: required bool is_overwrite;
|
111
|
+
|
112
|
+
// The base directory in hdfs of the table targeted by this INSERT
|
113
|
+
2: required string hdfs_base_dir;
|
114
|
+
|
115
|
+
// The target table name
|
116
|
+
3: required string table_name;
|
117
|
+
|
118
|
+
// The target table database
|
119
|
+
4: required string table_db;
|
120
|
+
}
|
121
|
+
|
122
|
+
// Result of call to ImpalaPlanService/JniFrontend.CreateQueryRequest()
|
123
|
+
struct TQueryExecRequest {
|
124
|
+
// global descriptor tbl for all fragments
|
125
|
+
1: optional Descriptors.TDescriptorTable desc_tbl
|
126
|
+
|
127
|
+
// fragments[i] may consume the output of fragments[j > i];
|
128
|
+
// fragments[0] is the root fragment and also the coordinator fragment, if
|
129
|
+
// it is unpartitioned.
|
130
|
+
2: required list<Planner.TPlanFragment> fragments
|
131
|
+
|
132
|
+
// Specifies the destination fragment of the output of each fragment.
|
133
|
+
// parent_fragment_idx.size() == fragments.size() - 1 and
|
134
|
+
// fragments[i] sends its output to fragments[dest_fragment_idx[i-1]]
|
135
|
+
3: optional list<i32> dest_fragment_idx
|
136
|
+
|
137
|
+
// A map from scan node ids to a list of scan range locations.
|
138
|
+
// The node ids refer to scan nodes in fragments[].plan_tree
|
139
|
+
4: optional map<Types.TPlanNodeId, list<Planner.TScanRangeLocations>>
|
140
|
+
per_node_scan_ranges
|
141
|
+
|
142
|
+
// Metadata of the query result set (only for select)
|
143
|
+
5: optional TResultSetMetadata result_set_metadata
|
144
|
+
|
145
|
+
// Set if the query needs finalization after it executes
|
146
|
+
6: optional TFinalizeParams finalize_params
|
147
|
+
|
148
|
+
7: required ImpalaInternalService.TQueryGlobals query_globals
|
149
|
+
}
|
150
|
+
|
151
|
+
enum TDdlType {
|
152
|
+
SHOW_TABLES,
|
153
|
+
SHOW_DBS,
|
154
|
+
USE,
|
155
|
+
DESCRIBE
|
156
|
+
}
|
157
|
+
|
158
|
+
struct TDdlExecRequest {
|
159
|
+
1: required TDdlType ddl_type
|
160
|
+
|
161
|
+
// Used for USE and DESCRIBE
|
162
|
+
2: optional string database;
|
163
|
+
|
164
|
+
// Table name (not fully-qualified) for DESCRIBE
|
165
|
+
3: optional string describe_table;
|
166
|
+
|
167
|
+
// Patterns to match table names against for SHOW
|
168
|
+
4: optional string show_pattern;
|
169
|
+
}
|
170
|
+
|
171
|
+
// Result of call to createExecRequest()
|
172
|
+
struct TExecRequest {
|
173
|
+
1: required Types.TStmtType stmt_type;
|
174
|
+
|
175
|
+
2: optional string sql_stmt;
|
176
|
+
|
177
|
+
// Globally unique id for this request. Assigned by the planner.
|
178
|
+
3: required Types.TUniqueId request_id
|
179
|
+
|
180
|
+
// Copied from the corresponding TClientRequest
|
181
|
+
4: required ImpalaInternalService.TQueryOptions query_options;
|
182
|
+
|
183
|
+
// TQueryExecRequest for the backend
|
184
|
+
// Set iff stmt_type is QUERY or DML
|
185
|
+
5: optional TQueryExecRequest query_exec_request
|
186
|
+
|
187
|
+
// Set iff stmt_type is DDL
|
188
|
+
6: optional TDdlExecRequest ddl_exec_request
|
189
|
+
|
190
|
+
// Metadata of the query result set (not set for DML)
|
191
|
+
7: optional TResultSetMetadata result_set_metadata
|
192
|
+
}
|
193
|
+
|
@@ -0,0 +1,265 @@
|
|
1
|
+
// Copyright 2012 Cloudera Inc.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
//
|
16
|
+
// This file contains the details of the protocol between coordinators and backends.
|
17
|
+
|
18
|
+
namespace cpp impala
|
19
|
+
namespace java com.cloudera.impala.thrift
|
20
|
+
namespace rb Impala.Protocol
|
21
|
+
|
22
|
+
include "Status.thrift"
|
23
|
+
include "Types.thrift"
|
24
|
+
include "Exprs.thrift"
|
25
|
+
include "Descriptors.thrift"
|
26
|
+
include "PlanNodes.thrift"
|
27
|
+
include "Planner.thrift"
|
28
|
+
include "DataSinks.thrift"
|
29
|
+
include "Data.thrift"
|
30
|
+
include "RuntimeProfile.thrift"
|
31
|
+
include "ImpalaService.thrift"
|
32
|
+
include "JavaConstants.thrift"
|
33
|
+
|
34
|
+
// Query options that correspond to ImpalaService.ImpalaQueryOptions
|
35
|
+
// TODO: make all of these optional, otherwise it will be impossible to
|
36
|
+
// retire options and do rolling upgrades between releases
|
37
|
+
struct TQueryOptions {
|
38
|
+
1: required bool abort_on_error = 0
|
39
|
+
2: required i32 max_errors = 0
|
40
|
+
3: required bool disable_codegen = 0
|
41
|
+
4: required i32 batch_size = 0
|
42
|
+
|
43
|
+
// return_as_ascii is not listed in ImpalaService.ImpalaQueryOptions because Beeswax
|
44
|
+
// should only return ascii. This option is only for internal testing.
|
45
|
+
// if true, return query results in ASCII format (TColumnValue.stringVal),
|
46
|
+
// otherwise return results in their native format (each TColumnValue
|
47
|
+
// uses the field corresponding to the column's native type).
|
48
|
+
5: required bool return_as_ascii = 1
|
49
|
+
|
50
|
+
6: required i32 num_nodes = JavaConstants.NUM_NODES_ALL
|
51
|
+
7: required i64 max_scan_range_length = 0
|
52
|
+
8: required i32 num_scanner_threads = 0
|
53
|
+
9: required i32 max_io_buffers = 0
|
54
|
+
10: required bool allow_unsupported_formats = 0
|
55
|
+
11: optional i64 default_order_by_limit = -1
|
56
|
+
}
|
57
|
+
|
58
|
+
// A scan range plus the parameters needed to execute that scan.
|
59
|
+
struct TScanRangeParams {
|
60
|
+
1: required PlanNodes.TScanRange scan_range
|
61
|
+
2: optional i32 volume_id = -1
|
62
|
+
}
|
63
|
+
|
64
|
+
// Specification of one output destination of a plan fragment
|
65
|
+
struct TPlanFragmentDestination {
|
66
|
+
// the globally unique fragment instance id
|
67
|
+
1: required Types.TUniqueId fragment_instance_id
|
68
|
+
|
69
|
+
// ... which is being executed on this server
|
70
|
+
2: required Types.THostPort server
|
71
|
+
}
|
72
|
+
|
73
|
+
// Parameters for a single execution instance of a particular TPlanFragment
|
74
|
+
// TODO: for range partitioning, we also need to specify the range boundaries
|
75
|
+
struct TPlanFragmentExecParams {
|
76
|
+
// a globally unique id assigned to the entire query
|
77
|
+
1: required Types.TUniqueId query_id
|
78
|
+
|
79
|
+
// a globally unique id assigned to this particular execution instance of
|
80
|
+
// a TPlanFragment
|
81
|
+
2: required Types.TUniqueId fragment_instance_id
|
82
|
+
|
83
|
+
// initial scan ranges for each scan node in TPlanFragment.plan_tree
|
84
|
+
3: required map<Types.TPlanNodeId, list<TScanRangeParams>> per_node_scan_ranges
|
85
|
+
|
86
|
+
// number of senders for ExchangeNodes contained in TPlanFragment.plan_tree;
|
87
|
+
// needed to create a DataStreamRecvr
|
88
|
+
4: required map<Types.TPlanNodeId, i32> per_exch_num_senders
|
89
|
+
|
90
|
+
// Output destinations, one per output partition.
|
91
|
+
// The partitioning of the output is specified by
|
92
|
+
// TPlanFragment.output_sink.output_partition.
|
93
|
+
// The number of output partitions is destinations.size().
|
94
|
+
5: list<TPlanFragmentDestination> destinations
|
95
|
+
}
|
96
|
+
|
97
|
+
// Global query parameters assigned by the coordinator.
|
98
|
+
struct TQueryGlobals {
|
99
|
+
// String containing a timestamp set as the current time.
|
100
|
+
1: required string now_string
|
101
|
+
}
|
102
|
+
|
103
|
+
|
104
|
+
// Service Protocol Details
|
105
|
+
|
106
|
+
enum ImpalaInternalServiceVersion {
|
107
|
+
V1
|
108
|
+
}
|
109
|
+
|
110
|
+
|
111
|
+
// ExecPlanFragment
|
112
|
+
|
113
|
+
struct TExecPlanFragmentParams {
|
114
|
+
1: required ImpalaInternalServiceVersion protocol_version
|
115
|
+
|
116
|
+
// required in V1
|
117
|
+
2: optional Planner.TPlanFragment fragment
|
118
|
+
|
119
|
+
// required in V1
|
120
|
+
3: optional Descriptors.TDescriptorTable desc_tbl
|
121
|
+
|
122
|
+
// required in V1
|
123
|
+
4: optional TPlanFragmentExecParams params
|
124
|
+
|
125
|
+
// Initiating coordinator.
|
126
|
+
// TODO: determine whether we can get this somehow via the Thrift rpc mechanism.
|
127
|
+
// required in V1
|
128
|
+
5: optional Types.THostPort coord
|
129
|
+
|
130
|
+
// backend number assigned by coord to identify backend
|
131
|
+
// required in V1
|
132
|
+
6: optional i32 backend_num
|
133
|
+
|
134
|
+
// Global query parameters assigned by coordinator.
|
135
|
+
// required in V1
|
136
|
+
7: optional TQueryGlobals query_globals
|
137
|
+
|
138
|
+
// options for the query
|
139
|
+
// required in V1
|
140
|
+
8: optional TQueryOptions query_options
|
141
|
+
}
|
142
|
+
|
143
|
+
struct TExecPlanFragmentResult {
|
144
|
+
// required in V1
|
145
|
+
1: optional Status.TStatus status
|
146
|
+
}
|
147
|
+
|
148
|
+
|
149
|
+
// ReportExecStatus
|
150
|
+
|
151
|
+
// The results of an INSERT query, sent to the coordinator as part of
|
152
|
+
// TReportExecStatusParams
|
153
|
+
struct TInsertExecStatus {
|
154
|
+
// Number of rows appended by an INSERT, per-partition.
|
155
|
+
// The keys represent partitions to create, coded as k1=v1/k2=v2/k3=v3..., with the
|
156
|
+
// root in an unpartitioned table being the empty string.
|
157
|
+
// The target table name is recorded in the corresponding TQueryExecRequest
|
158
|
+
1: optional map<string, i64> num_appended_rows
|
159
|
+
|
160
|
+
// A map from temporary absolute file path to final absolute destination. The
|
161
|
+
// coordinator performs these updates after the query completes.
|
162
|
+
2: required map<string, string> files_to_move;
|
163
|
+
}
|
164
|
+
|
165
|
+
struct TReportExecStatusParams {
|
166
|
+
1: required ImpalaInternalServiceVersion protocol_version
|
167
|
+
|
168
|
+
// required in V1
|
169
|
+
2: optional Types.TUniqueId query_id
|
170
|
+
|
171
|
+
// passed into ExecPlanFragment() as TExecPlanFragmentParams.backend_num
|
172
|
+
// required in V1
|
173
|
+
3: optional i32 backend_num
|
174
|
+
|
175
|
+
// required in V1
|
176
|
+
4: optional Types.TUniqueId fragment_instance_id
|
177
|
+
|
178
|
+
// Status of fragment execution; any error status means it's done.
|
179
|
+
// required in V1
|
180
|
+
5: optional Status.TStatus status
|
181
|
+
|
182
|
+
// If true, fragment finished executing.
|
183
|
+
// required in V1
|
184
|
+
6: optional bool done
|
185
|
+
|
186
|
+
// cumulative profile
|
187
|
+
// required in V1
|
188
|
+
7: optional RuntimeProfile.TRuntimeProfileTree profile
|
189
|
+
|
190
|
+
// Cumulative structural changes made by a table sink
|
191
|
+
// optional in V1
|
192
|
+
8: optional TInsertExecStatus insert_exec_status;
|
193
|
+
|
194
|
+
// New errors that have not been reported to the coordinator
|
195
|
+
// optional in V1
|
196
|
+
9: optional list<string> error_log
|
197
|
+
}
|
198
|
+
|
199
|
+
struct TReportExecStatusResult {
|
200
|
+
// required in V1
|
201
|
+
1: optional Status.TStatus status
|
202
|
+
}
|
203
|
+
|
204
|
+
|
205
|
+
// CancelPlanFragment
|
206
|
+
|
207
|
+
struct TCancelPlanFragmentParams {
|
208
|
+
1: required ImpalaInternalServiceVersion protocol_version
|
209
|
+
|
210
|
+
// required in V1
|
211
|
+
2: optional Types.TUniqueId fragment_instance_id
|
212
|
+
}
|
213
|
+
|
214
|
+
struct TCancelPlanFragmentResult {
|
215
|
+
// required in V1
|
216
|
+
1: optional Status.TStatus status
|
217
|
+
}
|
218
|
+
|
219
|
+
|
220
|
+
// TransmitData
|
221
|
+
|
222
|
+
struct TTransmitDataParams {
|
223
|
+
1: required ImpalaInternalServiceVersion protocol_version
|
224
|
+
|
225
|
+
// required in V1
|
226
|
+
2: optional Types.TUniqueId dest_fragment_instance_id
|
227
|
+
|
228
|
+
// for debugging purposes; currently ignored
|
229
|
+
//3: optional Types.TUniqueId src_fragment_instance_id
|
230
|
+
|
231
|
+
// required in V1
|
232
|
+
4: optional Types.TPlanNodeId dest_node_id
|
233
|
+
|
234
|
+
// required in V1
|
235
|
+
5: optional Data.TRowBatch row_batch
|
236
|
+
|
237
|
+
// if set to true, indicates that no more row batches will be sent
|
238
|
+
// for this dest_node_id
|
239
|
+
6: optional bool eos
|
240
|
+
}
|
241
|
+
|
242
|
+
struct TTransmitDataResult {
|
243
|
+
// required in V1
|
244
|
+
1: optional Status.TStatus status
|
245
|
+
}
|
246
|
+
|
247
|
+
|
248
|
+
service ImpalaInternalService {
|
249
|
+
// Called by coord to start asynchronous execution of plan fragment in backend.
|
250
|
+
// Returns as soon as all incoming data streams have been set up.
|
251
|
+
TExecPlanFragmentResult ExecPlanFragment(1:TExecPlanFragmentParams params);
|
252
|
+
|
253
|
+
// Periodically called by backend to report status of plan fragment execution
|
254
|
+
// back to coord; also called when execution is finished, for whatever reason.
|
255
|
+
TReportExecStatusResult ReportExecStatus(1:TReportExecStatusParams params);
|
256
|
+
|
257
|
+
// Called by coord to cancel execution of a single plan fragment, which this
|
258
|
+
// coordinator initiated with a prior call to ExecPlanFragment.
|
259
|
+
// Cancellation is asynchronous.
|
260
|
+
TCancelPlanFragmentResult CancelPlanFragment(1:TCancelPlanFragmentParams params);
|
261
|
+
|
262
|
+
// Called by sender to transmit single row batch. Returns error indication
|
263
|
+
// if params.fragmentId or params.destNodeId are unknown or if data couldn't be read.
|
264
|
+
TTransmitDataResult TransmitData(1:TTransmitDataParams params);
|
265
|
+
}
|