@cubejs-backend/databricks-jdbc-driver 0.30.20 → 0.30.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,39 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.30.23](https://github.com/cube-js/cube.js/compare/v0.30.22...v0.30.23) (2022-06-14)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **databricks-jdbc:** jdbc implementation of the export bucket feature ([d534e67](https://github.com/cube-js/cube.js/commit/d534e670a4568b905b55d0f5504d5c836d5841b2))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [0.30.22](https://github.com/cube-js/cube.js/compare/v0.30.21...v0.30.22) (2022-06-14)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **@cubejs-backend/databricks-jdbc-driver:** Missing prefix during blob listing ([0ffea61](https://github.com/cube-js/cube.js/commit/0ffea61a8d3de5afe2cbee351d359d262669024c))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [0.30.21](https://github.com/cube-js/cube.js/compare/v0.30.20...v0.30.21) (2022-06-13)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Features
|
|
32
|
+
|
|
33
|
+
* **databricks-jdbc:** improving performance ([1ef4504](https://github.com/cube-js/cube.js/commit/1ef45040f912d7f81b76a0495ddfa5db28ad9067))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
6
39
|
## [0.30.20](https://github.com/cube-js/cube.js/compare/v0.30.19...v0.30.20) (2022-06-11)
|
|
7
40
|
|
|
8
41
|
**Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver
|
|
@@ -43,78 +43,51 @@ export declare class DatabricksDriver extends JDBCDriver {
|
|
|
43
43
|
*/
|
|
44
44
|
isUnloadSupported(): Promise<boolean>;
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
|
|
48
|
-
private getApiUrl;
|
|
49
|
-
/**
|
|
50
|
-
* Returns databricks API token.
|
|
51
|
-
*/
|
|
52
|
-
private getApiToken;
|
|
53
|
-
/**
|
|
54
|
-
* Sleeper method.
|
|
55
|
-
*/
|
|
56
|
-
private wait;
|
|
57
|
-
/**
|
|
58
|
-
* Assert http response.
|
|
59
|
-
*/
|
|
60
|
-
private assertResponse;
|
|
61
|
-
/**
|
|
62
|
-
* Fetch API wrapper.
|
|
63
|
-
*/
|
|
64
|
-
private fetch;
|
|
65
|
-
/**
|
|
66
|
-
* Returns IDs of databricks runned clusters.
|
|
67
|
-
*/
|
|
68
|
-
private getClustersIds;
|
|
69
|
-
/**
|
|
70
|
-
* Import predefined nodebook to the databricks under specified path.
|
|
71
|
-
*/
|
|
72
|
-
private importNotebook;
|
|
73
|
-
/**
|
|
74
|
-
* Create job and returns job id.
|
|
46
|
+
* Saves pre-aggs table to the bucket and returns links to download
|
|
47
|
+
* results.
|
|
75
48
|
*/
|
|
76
|
-
|
|
49
|
+
unload(tableName: string): Promise<DownloadTableCSVData>;
|
|
77
50
|
/**
|
|
78
|
-
*
|
|
51
|
+
* Unload table to bucket using Databricks JDBC query and returns (async)
|
|
52
|
+
* csv files signed URLs array.
|
|
79
53
|
*/
|
|
80
|
-
private
|
|
54
|
+
private getCsvFiles;
|
|
81
55
|
/**
|
|
82
|
-
*
|
|
56
|
+
* Saves specified table to the Azure blob storage and returns (async)
|
|
57
|
+
* csv files signed URLs array.
|
|
83
58
|
*/
|
|
84
|
-
private
|
|
59
|
+
private getAzureCsvFiles;
|
|
85
60
|
/**
|
|
86
|
-
*
|
|
61
|
+
* Returns Azure signed URLs of unloaded scv files.
|
|
87
62
|
*/
|
|
88
|
-
private
|
|
63
|
+
private getSignedAzureUrls;
|
|
89
64
|
/**
|
|
90
|
-
*
|
|
65
|
+
* Saves specified table to the S3 bucket and returns (async) csv files
|
|
66
|
+
* signed URLs array.
|
|
91
67
|
*/
|
|
92
|
-
private
|
|
68
|
+
private getS3CsvFiles;
|
|
93
69
|
/**
|
|
94
|
-
* Returns signed
|
|
70
|
+
* Returns S3 signed URLs of unloaded scv files.
|
|
95
71
|
*/
|
|
96
72
|
private getSignedS3Urls;
|
|
97
73
|
/**
|
|
98
|
-
*
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
*
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
*
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
*
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
* results.
|
|
116
|
-
*/
|
|
117
|
-
unload(tableName: string): Promise<DownloadTableCSVData>;
|
|
74
|
+
* Saves specified table to the configured bucket. This requires Databricks
|
|
75
|
+
* cluster to be configured.
|
|
76
|
+
*
|
|
77
|
+
* For Azure blob storage you need to configure account access key in
|
|
78
|
+
* Cluster -> Configuration -> Advanced options
|
|
79
|
+
* (https://docs.databricks.com/data/data-sources/azure/azure-storage.html#access-azure-blob-storage-directly)
|
|
80
|
+
*
|
|
81
|
+
* `fs.azure.account.key.<storage-account-name>.blob.core.windows.net <storage-account-access-key>`
|
|
82
|
+
*
|
|
83
|
+
* For S3 bucket storage you need to configure AWS access key and secret in
|
|
84
|
+
* Cluster -> Configuration -> Advanced options
|
|
85
|
+
* (https://docs.databricks.com/data/data-sources/aws/amazon-s3.html#access-s3-buckets-directly)
|
|
86
|
+
*
|
|
87
|
+
* `fs.s3a.access.key <aws-access-key>`
|
|
88
|
+
* `fs.s3a.secret.key <aws-secret-key>`
|
|
89
|
+
*/
|
|
90
|
+
private createExternalTable;
|
|
118
91
|
}
|
|
119
92
|
export {};
|
|
120
93
|
//# sourceMappingURL=DatabricksDriver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabricksDriver.d.ts","sourceRoot":"","sources":["../../src/DatabricksDriver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatabricksDriver.d.ts","sourceRoot":"","sources":["../../src/DatabricksDriver.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,oBAAoB,EACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,UAAU,EACV,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,oBAAY,6BAA6B,GAAG,uBAAuB,GACjE;IACE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAYJ,aAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAkCF;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;WAE3C,YAAY;gBAKxB,IAAI,EAAE,OAAO,CAAC,6BAA6B,CAAC;IA6BvC,QAAQ;cAIC,kBAAkB;IAIrB,uBAAuB,CAAC,UAAU,EAAE,MAAM;IAIhD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIrC,gBAAgB,CAAC,KAAK,EAAE,MAAM;;;;IAkB9B,cAAc,CAAC,UAAU,EAAE,MAAM;;;cAQ9B,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAiB7C,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAInC,YAAY;IAiBzB;;;OAGG;IACU,iBAAiB;IAI9B;;;OAGG;IACU,MAAM,CACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC;IAgBhC;;;OAGG;YACW,WAAW;IAqBzB;;;OAGG;YACW,gBAAgB;IAS9B;;OAEG;YACW,kBAAkB;IA6ChC;;;OAGG;YACW,aAAa;IAS3B;;OAEG;YACW,eAAe;IAgC7B;;;;;;;;;;;;;;;;OAgBG;YACW,mBAAmB;CAUlC"}
|
|
@@ -1,23 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
4
|
};
|
|
@@ -26,13 +7,11 @@ exports.DatabricksDriver = void 0;
|
|
|
26
7
|
/* eslint-disable no-restricted-syntax */
|
|
27
8
|
const fs_1 = __importDefault(require("fs"));
|
|
28
9
|
const path_1 = __importDefault(require("path"));
|
|
29
|
-
const node_fetch_1 = __importStar(require("node-fetch"));
|
|
30
10
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
31
11
|
const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
|
|
32
12
|
const storage_blob_1 = require("@azure/storage-blob");
|
|
33
13
|
const jdbc_driver_1 = require("@cubejs-backend/jdbc-driver");
|
|
34
14
|
const shared_1 = require("@cubejs-backend/shared");
|
|
35
|
-
const uuid_1 = require("uuid");
|
|
36
15
|
const DatabricksQuery_1 = require("./DatabricksQuery");
|
|
37
16
|
const installer_1 = require("./installer");
|
|
38
17
|
async function fileExistsOr(fsPath, fn) {
|
|
@@ -151,253 +130,84 @@ class DatabricksDriver extends jdbc_driver_1.JDBCDriver {
|
|
|
151
130
|
return this.config.exportBucket !== undefined;
|
|
152
131
|
}
|
|
153
132
|
/**
|
|
154
|
-
*
|
|
133
|
+
* Saves pre-aggs table to the bucket and returns links to download
|
|
134
|
+
* results.
|
|
155
135
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
catch (e) {
|
|
167
|
-
res = '';
|
|
168
|
-
}
|
|
169
|
-
if (!res.length) {
|
|
170
|
-
throw new Error(`Error parsing API URL from the CUBEJS_DB_DATABRICKS_URL = ${this.config.url}`);
|
|
171
|
-
}
|
|
172
|
-
return res;
|
|
136
|
+
async unload(tableName) {
|
|
137
|
+
const types = await this.tableColumnTypes(tableName);
|
|
138
|
+
const columns = types.map(t => t.name).join(', ');
|
|
139
|
+
const pathname = `${this.config.exportBucket}/${tableName}.csv`;
|
|
140
|
+
const csvFile = await this.getCsvFiles(tableName, columns, pathname);
|
|
141
|
+
return {
|
|
142
|
+
csvFile,
|
|
143
|
+
types,
|
|
144
|
+
csvNoHeader: true,
|
|
145
|
+
};
|
|
173
146
|
}
|
|
174
147
|
/**
|
|
175
|
-
*
|
|
148
|
+
* Unload table to bucket using Databricks JDBC query and returns (async)
|
|
149
|
+
* csv files signed URLs array.
|
|
176
150
|
*/
|
|
177
|
-
|
|
151
|
+
async getCsvFiles(table, columns, pathname) {
|
|
178
152
|
let res;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
.
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
if (!res.length) {
|
|
190
|
-
throw new Error('Error parsing API token from the CUBEJS_DB_DATABRICKS_URL' +
|
|
191
|
-
` = ${this.config.url}`);
|
|
153
|
+
switch (this.config.bucketType) {
|
|
154
|
+
case 'azure':
|
|
155
|
+
res = await this.getAzureCsvFiles(table, columns, pathname);
|
|
156
|
+
break;
|
|
157
|
+
case 's3':
|
|
158
|
+
res = await this.getS3CsvFiles(table, columns, pathname);
|
|
159
|
+
break;
|
|
160
|
+
default:
|
|
161
|
+
throw new Error(`Unsupported export bucket type: ${this.config.bucketType}`);
|
|
192
162
|
}
|
|
193
163
|
return res;
|
|
194
164
|
}
|
|
195
165
|
/**
|
|
196
|
-
*
|
|
166
|
+
* Saves specified table to the Azure blob storage and returns (async)
|
|
167
|
+
* csv files signed URLs array.
|
|
197
168
|
*/
|
|
198
|
-
|
|
199
|
-
|
|
169
|
+
async getAzureCsvFiles(table, columns, pathname) {
|
|
170
|
+
await this.createExternalTable(table, columns);
|
|
171
|
+
return this.getSignedAzureUrls(pathname);
|
|
200
172
|
}
|
|
201
173
|
/**
|
|
202
|
-
*
|
|
174
|
+
* Returns Azure signed URLs of unloaded scv files.
|
|
203
175
|
*/
|
|
204
|
-
async
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
176
|
+
async getSignedAzureUrls(pathname) {
|
|
177
|
+
const csvFile = [];
|
|
178
|
+
const [container, account] = pathname.split('wasbs://')[1].split('.blob')[0].split('@');
|
|
179
|
+
const foldername = pathname.split(`${this.config.exportBucket}/`)[1];
|
|
180
|
+
const expr = new RegExp(`${foldername}\\/.*\\.csv$`, 'i');
|
|
181
|
+
const credential = new storage_blob_1.StorageSharedKeyCredential(account, this.config.azureKey);
|
|
182
|
+
const blobClient = new storage_blob_1.BlobServiceClient(`https://${account}.blob.core.windows.net`, credential);
|
|
183
|
+
const containerClient = blobClient.getContainerClient(container);
|
|
184
|
+
const blobsList = containerClient.listBlobsFlat({ prefix: foldername });
|
|
185
|
+
for await (const blob of blobsList) {
|
|
186
|
+
if (blob.name && expr.test(blob.name)) {
|
|
187
|
+
const sas = storage_blob_1.generateBlobSASQueryParameters({
|
|
188
|
+
containerName: container,
|
|
189
|
+
blobName: blob.name,
|
|
190
|
+
permissions: storage_blob_1.ContainerSASPermissions.parse('r'),
|
|
191
|
+
startsOn: new Date(new Date().valueOf()),
|
|
192
|
+
expiresOn: new Date(new Date().valueOf() + 1000 * 60 * 60),
|
|
193
|
+
protocol: storage_blob_1.SASProtocol.Https,
|
|
194
|
+
version: '2020-08-04',
|
|
195
|
+
}, credential).toString();
|
|
196
|
+
csvFile.push(`https://${account}.blob.core.windows.net/${container}/${blob.name}?${sas}`);
|
|
197
|
+
}
|
|
208
198
|
}
|
|
199
|
+
return csvFile;
|
|
209
200
|
}
|
|
210
201
|
/**
|
|
211
|
-
*
|
|
212
|
-
|
|
213
|
-
async fetch(req, count, ms) {
|
|
214
|
-
count = count || 0;
|
|
215
|
-
ms = ms || 0;
|
|
216
|
-
return new Promise((resolve, reject) => {
|
|
217
|
-
this
|
|
218
|
-
.wait(ms)
|
|
219
|
-
.then(() => {
|
|
220
|
-
node_fetch_1.default(req)
|
|
221
|
-
.then((res) => {
|
|
222
|
-
this
|
|
223
|
-
.assertResponse(res)
|
|
224
|
-
.then(() => { resolve(res); })
|
|
225
|
-
.catch((err) => {
|
|
226
|
-
if (res.status === 429 && count < 5) {
|
|
227
|
-
this
|
|
228
|
-
.fetch(req, count++, ms + 1000)
|
|
229
|
-
.then((_res) => { resolve(_res); })
|
|
230
|
-
.catch((_err) => { reject(_err); });
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
reject(err);
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Returns IDs of databricks runned clusters.
|
|
242
|
-
*/
|
|
243
|
-
async getClustersIds() {
|
|
244
|
-
const url = `https://${this.getApiUrl()}/api/2.0/clusters/list`;
|
|
245
|
-
const request = new node_fetch_1.Request(url, {
|
|
246
|
-
headers: new node_fetch_1.Headers({
|
|
247
|
-
Accept: '*/*',
|
|
248
|
-
Authorization: `Bearer ${this.getApiToken()}`,
|
|
249
|
-
}),
|
|
250
|
-
});
|
|
251
|
-
const response = await this.fetch(request);
|
|
252
|
-
const body = await response.json();
|
|
253
|
-
return body.clusters
|
|
254
|
-
.filter(item => item.state === 'RUNNING')
|
|
255
|
-
.map(item => item.cluster_id);
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Import predefined nodebook to the databricks under specified path.
|
|
259
|
-
*/
|
|
260
|
-
async importNotebook(p, content) {
|
|
261
|
-
const url = `https://${this.getApiUrl()}/api/2.0/workspace/import`;
|
|
262
|
-
const request = new node_fetch_1.Request(url, {
|
|
263
|
-
method: 'POST',
|
|
264
|
-
headers: new node_fetch_1.Headers({
|
|
265
|
-
Accept: '*/*',
|
|
266
|
-
Authorization: `Bearer ${this.getApiToken()}`,
|
|
267
|
-
}),
|
|
268
|
-
body: JSON.stringify({
|
|
269
|
-
format: 'SOURCE',
|
|
270
|
-
language: 'SCALA',
|
|
271
|
-
overwrite: true,
|
|
272
|
-
content,
|
|
273
|
-
path: p,
|
|
274
|
-
}),
|
|
275
|
-
});
|
|
276
|
-
await this.fetch(request);
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Create job and returns job id.
|
|
280
|
-
*/
|
|
281
|
-
async createJob(cluster, p) {
|
|
282
|
-
const url = `https://${this.getApiUrl()}/api/2.0/jobs/create`;
|
|
283
|
-
const request = new node_fetch_1.Request(url, {
|
|
284
|
-
method: 'POST',
|
|
285
|
-
headers: new node_fetch_1.Headers({
|
|
286
|
-
Accept: '*/*',
|
|
287
|
-
Authorization: `Bearer ${this.getApiToken()}`,
|
|
288
|
-
}),
|
|
289
|
-
body: JSON.stringify({
|
|
290
|
-
existing_cluster_id: cluster,
|
|
291
|
-
notebook_task: {
|
|
292
|
-
notebook_path: p,
|
|
293
|
-
},
|
|
294
|
-
}),
|
|
295
|
-
});
|
|
296
|
-
const response = await this.fetch(request);
|
|
297
|
-
const body = await response.json();
|
|
298
|
-
return body.job_id;
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Run job and returns run id.
|
|
302
|
-
*/
|
|
303
|
-
async runJob(job) {
|
|
304
|
-
const url = `https://${this.getApiUrl()}/api/2.0/jobs/run-now`;
|
|
305
|
-
const request = new node_fetch_1.Request(url, {
|
|
306
|
-
method: 'POST',
|
|
307
|
-
headers: new node_fetch_1.Headers({
|
|
308
|
-
Accept: '*/*',
|
|
309
|
-
Authorization: `Bearer ${this.getApiToken()}`,
|
|
310
|
-
}),
|
|
311
|
-
body: JSON.stringify({
|
|
312
|
-
job_id: job,
|
|
313
|
-
}),
|
|
314
|
-
});
|
|
315
|
-
const response = await this.fetch(request);
|
|
316
|
-
const body = await response.json();
|
|
317
|
-
return body.run_id;
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Pooling databricks until run in progress and resolve when it's done.
|
|
321
|
-
*/
|
|
322
|
-
async waitResult(run, ms) {
|
|
323
|
-
ms = ms || 1000;
|
|
324
|
-
ms = ms <= 10000 ? ms + 1000 : ms;
|
|
325
|
-
return new Promise((resolve, reject) => {
|
|
326
|
-
const url = `https://${this.getApiUrl()}/api/2.0/jobs/runs/get?run_id=${run}`;
|
|
327
|
-
const request = new node_fetch_1.Request(url, {
|
|
328
|
-
headers: new node_fetch_1.Headers({
|
|
329
|
-
Accept: '*/*',
|
|
330
|
-
Authorization: `Bearer ${this.getApiToken()}`,
|
|
331
|
-
}),
|
|
332
|
-
});
|
|
333
|
-
this
|
|
334
|
-
.wait(ms)
|
|
335
|
-
.then(() => {
|
|
336
|
-
this
|
|
337
|
-
.fetch(request)
|
|
338
|
-
.then((response) => {
|
|
339
|
-
response
|
|
340
|
-
.json()
|
|
341
|
-
.then((body) => {
|
|
342
|
-
const { state } = body;
|
|
343
|
-
if (state.life_cycle_state === 'TERMINATED' &&
|
|
344
|
-
state.result_state === 'SUCCESS') {
|
|
345
|
-
resolve(state.result_state);
|
|
346
|
-
}
|
|
347
|
-
else if (state.life_cycle_state === 'INTERNAL_ERROR' ||
|
|
348
|
-
state.result_state === 'FAILED' ||
|
|
349
|
-
state.result_state === 'TIMEDOUT' ||
|
|
350
|
-
state.result_state === 'CANCELED') {
|
|
351
|
-
reject(state.result_state);
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
this
|
|
355
|
-
.waitResult(run, ms)
|
|
356
|
-
.then((res) => { resolve(res); })
|
|
357
|
-
.catch((err) => { reject(err); });
|
|
358
|
-
}
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
});
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Delete job.
|
|
366
|
-
*/
|
|
367
|
-
async deleteJob(job) {
|
|
368
|
-
const url = `https://${this.getApiUrl()}/api/2.0/jobs/delete`;
|
|
369
|
-
const request = new node_fetch_1.Request(url, {
|
|
370
|
-
method: 'POST',
|
|
371
|
-
headers: new node_fetch_1.Headers({
|
|
372
|
-
Accept: '*/*',
|
|
373
|
-
Authorization: `Bearer ${this.getApiToken()}`,
|
|
374
|
-
}),
|
|
375
|
-
body: JSON.stringify({
|
|
376
|
-
job_id: job,
|
|
377
|
-
}),
|
|
378
|
-
});
|
|
379
|
-
await this.fetch(request);
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* Remove nodebook.
|
|
202
|
+
* Saves specified table to the S3 bucket and returns (async) csv files
|
|
203
|
+
* signed URLs array.
|
|
383
204
|
*/
|
|
384
|
-
async
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
method: 'POST',
|
|
388
|
-
headers: new node_fetch_1.Headers({
|
|
389
|
-
Accept: '*/*',
|
|
390
|
-
Authorization: `Bearer ${this.getApiToken()}`,
|
|
391
|
-
}),
|
|
392
|
-
body: JSON.stringify({
|
|
393
|
-
path: p,
|
|
394
|
-
recursive: true,
|
|
395
|
-
}),
|
|
396
|
-
});
|
|
397
|
-
await this.fetch(request);
|
|
205
|
+
async getS3CsvFiles(table, columns, pathname) {
|
|
206
|
+
await this.createExternalTable(table, columns);
|
|
207
|
+
return this.getSignedS3Urls(pathname);
|
|
398
208
|
}
|
|
399
209
|
/**
|
|
400
|
-
* Returns signed
|
|
210
|
+
* Returns S3 signed URLs of unloaded scv files.
|
|
401
211
|
*/
|
|
402
212
|
async getSignedS3Urls(pathname) {
|
|
403
213
|
const client = new client_s3_1.S3({
|
|
@@ -427,144 +237,28 @@ class DatabricksDriver extends jdbc_driver_1.JDBCDriver {
|
|
|
427
237
|
return csvFile;
|
|
428
238
|
}
|
|
429
239
|
/**
|
|
430
|
-
*
|
|
240
|
+
* Saves specified table to the configured bucket. This requires Databricks
|
|
241
|
+
* cluster to be configured.
|
|
242
|
+
*
|
|
243
|
+
* For Azure blob storage you need to configure account access key in
|
|
244
|
+
* Cluster -> Configuration -> Advanced options
|
|
245
|
+
* (https://docs.databricks.com/data/data-sources/azure/azure-storage.html#access-azure-blob-storage-directly)
|
|
246
|
+
*
|
|
247
|
+
* `fs.azure.account.key.<storage-account-name>.blob.core.windows.net <storage-account-access-key>`
|
|
248
|
+
*
|
|
249
|
+
* For S3 bucket storage you need to configure AWS access key and secret in
|
|
250
|
+
* Cluster -> Configuration -> Advanced options
|
|
251
|
+
* (https://docs.databricks.com/data/data-sources/aws/amazon-s3.html#access-s3-buckets-directly)
|
|
252
|
+
*
|
|
253
|
+
* `fs.s3a.access.key <aws-access-key>`
|
|
254
|
+
* `fs.s3a.secret.key <aws-secret-key>`
|
|
431
255
|
*/
|
|
432
|
-
async
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
)
|
|
439
|
-
sc.hadoopConfiguration.set(
|
|
440
|
-
"fs.s3n.awsSecretAccessKey","${this.config.awsSecret}"
|
|
441
|
-
)
|
|
442
|
-
sqlContext
|
|
443
|
-
.sql("SELECT ${columns} FROM ${table}")
|
|
444
|
-
.write
|
|
445
|
-
.format("com.databricks.spark.csv")
|
|
446
|
-
.option("header", "false")
|
|
447
|
-
.save("${pathname}")`, 'utf-8').toString('base64');
|
|
448
|
-
const cluster = (await this.getClustersIds())[0];
|
|
449
|
-
try {
|
|
450
|
-
await this.importNotebook(filename, content);
|
|
451
|
-
}
|
|
452
|
-
catch (e) {
|
|
453
|
-
notebook = false;
|
|
454
|
-
}
|
|
455
|
-
if (notebook) {
|
|
456
|
-
try {
|
|
457
|
-
const job = await this.createJob(cluster, filename);
|
|
458
|
-
const run = await this.runJob(job);
|
|
459
|
-
await this.waitResult(run);
|
|
460
|
-
await this.deleteJob(job);
|
|
461
|
-
result = await this.getSignedS3Urls(pathname);
|
|
462
|
-
}
|
|
463
|
-
finally {
|
|
464
|
-
await this.deleteNotebook(filename);
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
return result;
|
|
468
|
-
}
|
|
469
|
-
/**
|
|
470
|
-
* Returns signed temporary URLs for Azure container objects.
|
|
471
|
-
*/
|
|
472
|
-
async getSignedWasbsUrls(pathname) {
|
|
473
|
-
const csvFile = [];
|
|
474
|
-
const [container, account] = pathname.split('wasbs://')[1].split('.blob')[0].split('@');
|
|
475
|
-
const foldername = pathname.split(`${this.config.exportBucket}/`)[1];
|
|
476
|
-
const expr = new RegExp(`${foldername}\\/.*\\.csv$`, 'i');
|
|
477
|
-
const credential = new storage_blob_1.StorageSharedKeyCredential(account, this.config.azureKey);
|
|
478
|
-
const blobClient = new storage_blob_1.BlobServiceClient(`https://${account}.blob.core.windows.net`, credential);
|
|
479
|
-
const containerClient = blobClient.getContainerClient(container);
|
|
480
|
-
const blobsList = containerClient.listBlobsFlat();
|
|
481
|
-
for await (const blob of blobsList) {
|
|
482
|
-
if (blob.name && expr.test(blob.name)) {
|
|
483
|
-
const sas = storage_blob_1.generateBlobSASQueryParameters({
|
|
484
|
-
containerName: container,
|
|
485
|
-
blobName: blob.name,
|
|
486
|
-
permissions: storage_blob_1.ContainerSASPermissions.parse('r'),
|
|
487
|
-
startsOn: new Date(new Date().valueOf()),
|
|
488
|
-
expiresOn: new Date(new Date().valueOf() + 1000 * 60 * 60),
|
|
489
|
-
protocol: storage_blob_1.SASProtocol.Https,
|
|
490
|
-
version: '2020-08-04',
|
|
491
|
-
}, credential).toString();
|
|
492
|
-
csvFile.push(`https://${account}.blob.core.windows.net/${container}/${blob.name}?${sas}`);
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
return csvFile;
|
|
496
|
-
}
|
|
497
|
-
/**
|
|
498
|
-
* Unload to Azure Blob Container bucket.
|
|
499
|
-
*/
|
|
500
|
-
async unloadWasbsCommand(table, columns, pathname) {
|
|
501
|
-
let result = [];
|
|
502
|
-
let notebook = true;
|
|
503
|
-
const filename = `/${uuid_1.v5(pathname, uuid_1.v1()).toString()}.scala`;
|
|
504
|
-
const storage = pathname.split('@')[1].split('.')[0];
|
|
505
|
-
const content = Buffer.from(`spark.conf.set(
|
|
506
|
-
"fs.azure.account.key.${storage}.blob.core.windows.net",
|
|
507
|
-
"${this.config.azureKey}"
|
|
508
|
-
)
|
|
509
|
-
sqlContext
|
|
510
|
-
.sql("SELECT ${columns} FROM ${table}")
|
|
511
|
-
.write
|
|
512
|
-
.format("com.databricks.spark.csv")
|
|
513
|
-
.option("header", "false")
|
|
514
|
-
.save("${pathname}")`, 'utf-8').toString('base64');
|
|
515
|
-
// TODO: if there is no cluster should we create new one?
|
|
516
|
-
const cluster = (await this.getClustersIds())[0];
|
|
517
|
-
try {
|
|
518
|
-
await this.importNotebook(filename, content);
|
|
519
|
-
}
|
|
520
|
-
catch (e) {
|
|
521
|
-
notebook = false;
|
|
522
|
-
}
|
|
523
|
-
if (notebook) {
|
|
524
|
-
try {
|
|
525
|
-
const job = await this.createJob(cluster, filename);
|
|
526
|
-
const run = await this.runJob(job);
|
|
527
|
-
await this.waitResult(run);
|
|
528
|
-
await this.deleteJob(job);
|
|
529
|
-
result = await this.getSignedWasbsUrls(pathname);
|
|
530
|
-
}
|
|
531
|
-
finally {
|
|
532
|
-
await this.deleteNotebook(filename);
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
return result;
|
|
536
|
-
}
|
|
537
|
-
/**
|
|
538
|
-
* Unload table to bucket.
|
|
539
|
-
*/
|
|
540
|
-
async unloadCommand(table, columns, pathname) {
|
|
541
|
-
let res;
|
|
542
|
-
switch (this.config.bucketType) {
|
|
543
|
-
case 's3':
|
|
544
|
-
res = await this.unloadS3Command(table, columns, pathname);
|
|
545
|
-
break;
|
|
546
|
-
case 'azure':
|
|
547
|
-
res = await this.unloadWasbsCommand(table, columns, pathname);
|
|
548
|
-
break;
|
|
549
|
-
default:
|
|
550
|
-
throw new Error(`Unsupported export bucket type: ${this.config.bucketType}`);
|
|
551
|
-
}
|
|
552
|
-
return res;
|
|
553
|
-
}
|
|
554
|
-
/**
|
|
555
|
-
* Saves pre-aggs table to the bucket and returns links to download
|
|
556
|
-
* results.
|
|
557
|
-
*/
|
|
558
|
-
async unload(tableName) {
|
|
559
|
-
const types = await this.tableColumnTypes(tableName);
|
|
560
|
-
const columns = types.map(t => t.name).join(', ');
|
|
561
|
-
const pathname = `${this.config.exportBucket}/${tableName}.csv`;
|
|
562
|
-
const csvFile = await this.unloadCommand(tableName, columns, pathname);
|
|
563
|
-
return {
|
|
564
|
-
csvFile,
|
|
565
|
-
types,
|
|
566
|
-
csvNoHeader: true,
|
|
567
|
-
};
|
|
256
|
+
async createExternalTable(table, columns) {
|
|
257
|
+
await this.query(`
|
|
258
|
+
CREATE TABLE ${table}_csv_export
|
|
259
|
+
USING CSV LOCATION '${this.config.exportBucket}/${table}.csv'
|
|
260
|
+
AS SELECT ${columns} FROM ${table}
|
|
261
|
+
`, []);
|
|
568
262
|
}
|
|
569
263
|
}
|
|
570
264
|
exports.DatabricksDriver = DatabricksDriver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabricksDriver.js","sourceRoot":"","sources":["../../src/DatabricksDriver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatabricksDriver.js","sourceRoot":"","sources":["../../src/DatabricksDriver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@cubejs-backend/databricks-jdbc-driver",
|
|
3
3
|
"description": "Cube.js Databricks database driver",
|
|
4
4
|
"author": "Cube Dev, Inc.",
|
|
5
|
-
"version": "0.30.
|
|
5
|
+
"version": "0.30.23",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"jest": {
|
|
62
62
|
"testEnvironment": "node"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "c9c3f53678cb8dae856a6b49b9ca00941edb504d"
|
|
65
65
|
}
|