@loaders.gl/parquet 4.0.4 → 4.1.0-alpha.2
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/dist/index.cjs +138 -66
- package/dist/index.d.ts +1 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -21
- package/dist/index.js.map +1 -1
- package/dist/lib/parsers/get-parquet-schema.d.ts.map +1 -1
- package/dist/lib/parsers/get-parquet-schema.js.map +1 -1
- package/dist/lib/parsers/parse-geoparquet.d.ts +6 -0
- package/dist/lib/parsers/parse-geoparquet.d.ts.map +1 -0
- package/dist/lib/parsers/parse-geoparquet.js +56 -0
- package/dist/lib/parsers/parse-geoparquet.js.map +1 -0
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts +6 -0
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-columns.js.map +1 -1
- package/dist/lib/parsers/parse-parquet.d.ts +17 -0
- package/dist/lib/parsers/parse-parquet.d.ts.map +1 -0
- package/dist/lib/parsers/{parse-parquet-to-rows.js → parse-parquet.js} +2 -8
- package/dist/lib/parsers/parse-parquet.js.map +1 -0
- package/dist/lib/wasm/encode-parquet-wasm.d.ts.map +1 -1
- package/dist/lib/wasm/encode-parquet-wasm.js.map +1 -1
- package/dist/lib/wasm/load-wasm-browser.d.ts.map +1 -1
- package/dist/lib/wasm/load-wasm-browser.js.map +1 -1
- package/dist/lib/wasm/load-wasm-node.d.ts.map +1 -1
- package/dist/lib/wasm/load-wasm-node.js.map +1 -1
- package/dist/lib/wasm/load-wasm.d.ts.map +1 -1
- package/dist/lib/wasm/load-wasm.js.map +1 -1
- package/dist/lib/wasm/parse-parquet-wasm.d.ts.map +1 -1
- package/dist/lib/wasm/parse-parquet-wasm.js.map +1 -1
- package/dist/parquet-loader.d.ts +14 -4
- package/dist/parquet-loader.d.ts.map +1 -1
- package/dist/parquet-loader.js +50 -4
- package/dist/parquet-loader.js.map +1 -1
- package/dist/parquet-wasm-loader.d.ts +4 -2
- package/dist/parquet-wasm-loader.d.ts.map +1 -1
- package/dist/parquet-wasm-loader.js +6 -1
- package/dist/parquet-wasm-loader.js.map +1 -1
- package/dist/workers/parquet-worker.js +1 -1
- package/dist/workers/parquet-worker.js.map +1 -1
- package/package.json +15 -12
- package/src/index.ts +7 -60
- package/src/lib/parsers/get-parquet-schema.ts +3 -0
- package/src/lib/parsers/parse-geoparquet.ts +87 -0
- package/src/lib/parsers/parse-parquet-to-columns.ts +6 -0
- package/src/lib/parsers/{parse-parquet-to-rows.ts → parse-parquet.ts} +20 -21
- package/src/lib/wasm/encode-parquet-wasm.ts +3 -0
- package/src/lib/wasm/load-wasm-browser.ts +3 -0
- package/src/lib/wasm/load-wasm-node.ts +3 -0
- package/src/lib/wasm/load-wasm.ts +3 -0
- package/src/lib/wasm/parse-parquet-wasm.ts +3 -0
- package/src/parquet-loader.ts +89 -9
- package/src/parquet-wasm-loader.ts +10 -2
- package/src/workers/parquet-worker.ts +1 -1
- package/dist/lib/parsers/parse-parquet-to-rows.d.ts +0 -6
- package/dist/lib/parsers/parse-parquet-to-rows.d.ts.map +0 -1
- package/dist/lib/parsers/parse-parquet-to-rows.js.map +0 -1
package/dist/parquet-loader.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Loader, LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
|
-
import type { ObjectRowTable, ObjectRowTableBatch, ColumnarTable, ColumnarTableBatch } from '@loaders.gl/schema';
|
|
1
|
+
import type { Loader, LoaderWithParser, LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
|
+
import type { ObjectRowTable, ObjectRowTableBatch, GeoJSONTable, GeoJSONTableBatch, ColumnarTable, ColumnarTableBatch } from '@loaders.gl/schema';
|
|
3
3
|
export { Buffer } from './polyfills/buffer/install-buffer-polyfill';
|
|
4
4
|
/** Options for the parquet loader */
|
|
5
5
|
export type ParquetLoaderOptions = LoaderOptions & {
|
|
@@ -17,7 +17,17 @@ export type ParquetLoaderOptions = LoaderOptions & {
|
|
|
17
17
|
url?: string;
|
|
18
18
|
};
|
|
19
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* ParquetJS table loader
|
|
22
|
+
*/
|
|
23
|
+
export declare const ParquetWorkerLoader: Loader<ObjectRowTable, ObjectRowTableBatch, ParquetLoaderOptions>;
|
|
20
24
|
/** ParquetJS table loader */
|
|
21
|
-
export declare const ParquetLoader:
|
|
22
|
-
export declare const
|
|
25
|
+
export declare const ParquetLoader: LoaderWithParser<ObjectRowTable | GeoJSONTable, ObjectRowTableBatch | GeoJSONTableBatch, ParquetLoaderOptions>;
|
|
26
|
+
export declare const GeoParquetWorkerLoader: Loader<GeoJSONTable, GeoJSONTableBatch, ParquetLoaderOptions>;
|
|
27
|
+
/** ParquetJS table loader */
|
|
28
|
+
export declare const GeoParquetLoader: LoaderWithParser<ObjectRowTable | GeoJSONTable, ObjectRowTableBatch | GeoJSONTableBatch, ParquetLoaderOptions>;
|
|
29
|
+
/** @deprecated Test to see if we can improve perf of parquetjs loader */
|
|
30
|
+
export declare const ParquetColumnarWorkerLoader: Loader<ColumnarTable, ColumnarTableBatch, ParquetLoaderOptions>;
|
|
31
|
+
/** @deprecated Test to see if we can improve perf of parquetjs loader */
|
|
32
|
+
export declare const ParquetColumnarLoader: LoaderWithParser<ColumnarTable, ColumnarTableBatch, ParquetLoaderOptions>;
|
|
23
33
|
//# sourceMappingURL=parquet-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet-loader.d.ts","sourceRoot":"","sources":["../src/parquet-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"parquet-loader.d.ts","sourceRoot":"","sources":["../src/parquet-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EAAC,MAAM,EAAC,MAAM,4CAA4C,CAAC;AAMlE,qCAAqC;AACrC,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,qCAAqC;IACrC,OAAO,CAAC,EAAE;QACR,qCAAqC;QACrC,KAAK,CAAC,EAAE,kBAAkB,GAAG,eAAe,CAAC;QAC7C,0FAA0F;QAC1F,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;QACnC,0DAA0D;QAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,qFAAqF;QACrF,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,gEAAgE;QAChE,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,cAAc,EACd,mBAAmB,EACnB,oBAAoB,CAqBrB,CAAC;AAEF,6BAA6B;AAC7B,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAC1C,cAAc,GAAG,YAAY,EAC7B,mBAAmB,GAAG,iBAAiB,EACvC,oBAAoB,CAQrB,CAAC;AAMF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,CAqB9F,CAAC;AAEJ,6BAA6B;AAC7B,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,CAC7C,cAAc,GAAG,YAAY,EAC7B,mBAAmB,GAAG,iBAAiB,EACvC,oBAAoB,CAQrB,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,aAAa,EACb,kBAAkB,EAClB,oBAAoB,CAarB,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,CAClD,aAAa,EACb,kBAAkB,EAClB,oBAAoB,CAQrB,CAAC"}
|
package/dist/parquet-loader.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { BlobFile } from '@loaders.gl/loader-utils';
|
|
2
|
+
import { parseParquetFile, parseParquetFileInBatches } from "./lib/parsers/parse-parquet.js";
|
|
3
|
+
import { parseGeoParquetFile, parseGeoParquetFileInBatches } from "./lib/parsers/parse-geoparquet.js";
|
|
4
|
+
import { parseParquetFileInColumns, parseParquetFileInColumnarBatches } from "./lib/parsers/parse-parquet-to-columns.js";
|
|
1
5
|
export { Buffer } from "./polyfills/buffer/install-buffer-polyfill.js";
|
|
2
6
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
3
|
-
export const
|
|
7
|
+
export const ParquetWorkerLoader = {
|
|
4
8
|
name: 'Apache Parquet',
|
|
5
9
|
id: 'parquet',
|
|
6
10
|
module: 'parquet',
|
|
@@ -21,7 +25,43 @@ export const ParquetLoader = {
|
|
|
21
25
|
}
|
|
22
26
|
}
|
|
23
27
|
};
|
|
24
|
-
export const
|
|
28
|
+
export const ParquetLoader = {
|
|
29
|
+
...ParquetWorkerLoader,
|
|
30
|
+
parse: (arrayBuffer, options) => parseParquetFile(new BlobFile(arrayBuffer), options),
|
|
31
|
+
parseFile: parseParquetFile,
|
|
32
|
+
parseFileInBatches: parseParquetFileInBatches
|
|
33
|
+
};
|
|
34
|
+
ParquetLoader.Buffer = Buffer;
|
|
35
|
+
export const GeoParquetWorkerLoader = {
|
|
36
|
+
name: 'Apache Parquet',
|
|
37
|
+
id: 'parquet',
|
|
38
|
+
module: 'parquet',
|
|
39
|
+
version: VERSION,
|
|
40
|
+
worker: true,
|
|
41
|
+
category: 'table',
|
|
42
|
+
extensions: ['parquet'],
|
|
43
|
+
mimeTypes: ['application/octet-stream'],
|
|
44
|
+
binary: true,
|
|
45
|
+
tests: ['PAR1', 'PARE'],
|
|
46
|
+
options: {
|
|
47
|
+
parquet: {
|
|
48
|
+
shape: 'geojson-table',
|
|
49
|
+
columnList: [],
|
|
50
|
+
geoparquet: true,
|
|
51
|
+
url: undefined,
|
|
52
|
+
preserveBinary: false
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
export const GeoParquetLoader = {
|
|
57
|
+
...GeoParquetWorkerLoader,
|
|
58
|
+
parse(arrayBuffer, options) {
|
|
59
|
+
return parseGeoParquetFile(new BlobFile(arrayBuffer), options);
|
|
60
|
+
},
|
|
61
|
+
parseFile: parseGeoParquetFile,
|
|
62
|
+
parseFileInBatches: parseGeoParquetFileInBatches
|
|
63
|
+
};
|
|
64
|
+
export const ParquetColumnarWorkerLoader = {
|
|
25
65
|
name: 'Apache Parquet',
|
|
26
66
|
id: 'parquet',
|
|
27
67
|
module: 'parquet',
|
|
@@ -34,6 +74,12 @@ export const ParquetColumnarLoader = {
|
|
|
34
74
|
tests: ['PAR1', 'PARE'],
|
|
35
75
|
options: ParquetLoader.options
|
|
36
76
|
};
|
|
37
|
-
|
|
38
|
-
|
|
77
|
+
export const ParquetColumnarLoader = {
|
|
78
|
+
...ParquetColumnarWorkerLoader,
|
|
79
|
+
parse(arrayBuffer, options) {
|
|
80
|
+
return parseParquetFileInColumns(new BlobFile(arrayBuffer), options);
|
|
81
|
+
},
|
|
82
|
+
parseFile: parseParquetFileInColumns,
|
|
83
|
+
parseFileInBatches: parseParquetFileInColumnarBatches
|
|
84
|
+
};
|
|
39
85
|
//# sourceMappingURL=parquet-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet-loader.js","names":["Buffer","VERSION","__VERSION__","
|
|
1
|
+
{"version":3,"file":"parquet-loader.js","names":["BlobFile","parseParquetFile","parseParquetFileInBatches","parseGeoParquetFile","parseGeoParquetFileInBatches","parseParquetFileInColumns","parseParquetFileInColumnarBatches","Buffer","VERSION","__VERSION__","ParquetWorkerLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","parquet","shape","columnList","geoparquet","url","undefined","preserveBinary","ParquetLoader","parse","arrayBuffer","parseFile","parseFileInBatches","GeoParquetWorkerLoader","GeoParquetLoader","ParquetColumnarWorkerLoader","ParquetColumnarLoader"],"sources":["../src/parquet-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {\n ObjectRowTable,\n ObjectRowTableBatch,\n GeoJSONTable,\n GeoJSONTableBatch,\n ColumnarTable,\n ColumnarTableBatch\n} from '@loaders.gl/schema';\nimport {BlobFile} from '@loaders.gl/loader-utils';\n\nimport {parseParquetFile, parseParquetFileInBatches} from './lib/parsers/parse-parquet';\nimport {parseGeoParquetFile, parseGeoParquetFileInBatches} from './lib/parsers/parse-geoparquet';\nimport {\n parseParquetFileInColumns,\n parseParquetFileInColumnarBatches\n} from './lib/parsers/parse-parquet-to-columns';\n\nexport {Buffer} from './polyfills/buffer/install-buffer-polyfill';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for the parquet loader */\nexport type ParquetLoaderOptions = LoaderOptions & {\n /** Options for the parquet loader */\n parquet?: {\n /** Format of returned parsed data */\n shape?: 'object-row-table' | 'geojson-table';\n /** Restrict which columns that are parsed from the table. Can save significant memory. */\n columnList?: string[] | string[][];\n /** If true, binary values are not converted to strings */\n preserveBinary?: boolean;\n /** @deprecated not used? Set to true to indicate that this is a geoparquet file. */\n geoparquet?: boolean;\n /** @deprecated URL to override loaders.gl/core parser system */\n url?: string;\n };\n};\n\n/**\n * ParquetJS table loader\n */\nexport const ParquetWorkerLoader: Loader<\n ObjectRowTable,\n ObjectRowTableBatch,\n ParquetLoaderOptions\n> = {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: {\n parquet: {\n shape: 'object-row-table',\n columnList: [],\n geoparquet: true,\n url: undefined,\n preserveBinary: false\n }\n }\n};\n\n/** ParquetJS table loader */\nexport const ParquetLoader: LoaderWithParser<\n ObjectRowTable | GeoJSONTable,\n ObjectRowTableBatch | GeoJSONTableBatch,\n ParquetLoaderOptions\n> = {\n ...ParquetWorkerLoader,\n parse: (arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) =>\n parseParquetFile(new BlobFile(arrayBuffer), options),\n\n parseFile: parseParquetFile,\n parseFileInBatches: parseParquetFileInBatches\n};\n\n// Defeat tree shaking\n// @ts-ignore\nParquetLoader.Buffer = Buffer;\n\nexport const GeoParquetWorkerLoader: Loader<GeoJSONTable, GeoJSONTableBatch, ParquetLoaderOptions> =\n {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: {\n parquet: {\n shape: 'geojson-table',\n columnList: [],\n geoparquet: true,\n url: undefined,\n preserveBinary: false\n }\n }\n };\n\n/** ParquetJS table loader */\nexport const GeoParquetLoader: LoaderWithParser<\n ObjectRowTable | GeoJSONTable,\n ObjectRowTableBatch | GeoJSONTableBatch,\n ParquetLoaderOptions\n> = {\n ...GeoParquetWorkerLoader,\n parse(arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) {\n return parseGeoParquetFile(new BlobFile(arrayBuffer), options);\n },\n parseFile: parseGeoParquetFile,\n parseFileInBatches: parseGeoParquetFileInBatches\n};\n\n/** @deprecated Test to see if we can improve perf of parquetjs loader */\nexport const ParquetColumnarWorkerLoader: Loader<\n ColumnarTable,\n ColumnarTableBatch,\n ParquetLoaderOptions\n> = {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: ParquetLoader.options\n};\n\n/** @deprecated Test to see if we can improve perf of parquetjs loader */\nexport const ParquetColumnarLoader: LoaderWithParser<\n ColumnarTable,\n ColumnarTableBatch,\n ParquetLoaderOptions\n> = {\n ...ParquetColumnarWorkerLoader,\n parse(arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) {\n return parseParquetFileInColumns(new BlobFile(arrayBuffer), options);\n },\n parseFile: parseParquetFileInColumns,\n parseFileInBatches: parseParquetFileInColumnarBatches\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Loader, LoaderOptions } from '@loaders.gl/loader-utils';
|
|
1
|
+
import type { Loader, LoaderWithParser, LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
2
|
import type { ArrowTable } from '@loaders.gl/arrow';
|
|
3
3
|
/** Parquet WASM loader options */
|
|
4
4
|
export type ParquetWasmLoaderOptions = LoaderOptions & {
|
|
@@ -8,5 +8,7 @@ export type ParquetWasmLoaderOptions = LoaderOptions & {
|
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
/** Parquet WASM table loader */
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const ParquetWasmWorkerLoader: Loader<ArrowTable, never, ParquetWasmLoaderOptions>;
|
|
12
|
+
/** Parquet WASM table loader */
|
|
13
|
+
export declare const ParquetWasmLoader: LoaderWithParser<ArrowTable, never, ParquetWasmLoaderOptions>;
|
|
12
14
|
//# sourceMappingURL=parquet-wasm-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet-wasm-loader.d.ts","sourceRoot":"","sources":["../src/parquet-wasm-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"parquet-wasm-loader.d.ts","sourceRoot":"","sources":["../src/parquet-wasm-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAQlD,kCAAkC;AAClC,MAAM,MAAM,wBAAwB,GAAG,aAAa,GAAG;IACrD,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,aAAa,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,wBAAwB,CAiBvF,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,wBAAwB,CAG3F,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { parseParquetWasm } from "./lib/wasm/parse-parquet-wasm.js";
|
|
1
2
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
2
|
-
export const
|
|
3
|
+
export const ParquetWasmWorkerLoader = {
|
|
3
4
|
name: 'Apache Parquet',
|
|
4
5
|
id: 'parquet-wasm',
|
|
5
6
|
module: 'parquet',
|
|
@@ -17,4 +18,8 @@ export const ParquetWasmLoader = {
|
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
};
|
|
21
|
+
export const ParquetWasmLoader = {
|
|
22
|
+
...ParquetWasmWorkerLoader,
|
|
23
|
+
parse: parseParquetWasm
|
|
24
|
+
};
|
|
20
25
|
//# sourceMappingURL=parquet-wasm-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet-wasm-loader.js","names":["VERSION","__VERSION__","
|
|
1
|
+
{"version":3,"file":"parquet-wasm-loader.js","names":["parseParquetWasm","VERSION","__VERSION__","ParquetWasmWorkerLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","parquet","type","wasmUrl","ParquetWasmLoader","parse"],"sources":["../src/parquet-wasm-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {ArrowTable} from '@loaders.gl/arrow';\n\nimport {parseParquetWasm} from './lib/wasm/parse-parquet-wasm';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Parquet WASM loader options */\nexport type ParquetWasmLoaderOptions = LoaderOptions & {\n parquet?: {\n type?: 'arrow-table';\n wasmUrl?: string;\n };\n};\n\n/** Parquet WASM table loader */\nexport const ParquetWasmWorkerLoader: Loader<ArrowTable, never, ParquetWasmLoaderOptions> = {\n name: 'Apache Parquet',\n id: 'parquet-wasm',\n module: 'parquet',\n version: VERSION,\n worker: false,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: {\n parquet: {\n type: 'arrow-table',\n wasmUrl: 'https://unpkg.com/parquet-wasm@0.3.1/esm2/arrow1_bg.wasm'\n }\n }\n};\n\n/** Parquet WASM table loader */\nexport const ParquetWasmLoader: LoaderWithParser<ArrowTable, never, ParquetWasmLoaderOptions> = {\n ...ParquetWasmWorkerLoader,\n parse: parseParquetWasm\n};\n"],"mappings":"SAMQA,gBAAgB;AAIxB,MAAMC,OAAO,GAAG,OAAOC,WAAW,KAAK,WAAW,GAAGA,WAAW,GAAG,QAAQ;AAW3E,OAAO,MAAMC,uBAA4E,GAAG;EAC1FC,IAAI,EAAE,gBAAgB;EACtBC,EAAE,EAAE,cAAc;EAClBC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,KAAK;EACbC,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;EACvBC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,IAAI,EAAE,aAAa;MACnBC,OAAO,EAAE;IACX;EACF;AACF,CAAC;AAGD,OAAO,MAAMC,iBAAgF,GAAG;EAC9F,GAAGf,uBAAuB;EAC1BgB,KAAK,EAAEnB;AACT,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet-worker.js","names":["createLoaderWorker","ParquetLoader"],"sources":["../../src/workers/parquet-worker.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {ParquetLoader} from '../
|
|
1
|
+
{"version":3,"file":"parquet-worker.js","names":["createLoaderWorker","ParquetLoader"],"sources":["../../src/workers/parquet-worker.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {ParquetLoader} from '../parquet-loader';\n\ncreateLoaderWorker(ParquetLoader);\n"],"mappings":"AAGA,SAAQA,kBAAkB,QAAO,0BAA0B;AAAC,SACpDC,aAAa;AAErBD,kBAAkB,CAACC,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/parquet",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.1.0-alpha.2",
|
|
4
4
|
"description": "Framework-independent loader for Apache Parquet files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -12,12 +12,15 @@
|
|
|
12
12
|
"url": "https://github.com/visgl/loaders.gl"
|
|
13
13
|
},
|
|
14
14
|
"keywords": [
|
|
15
|
-
"webgl",
|
|
16
15
|
"loader",
|
|
17
16
|
"parser",
|
|
18
17
|
"table",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
18
|
+
"parquet",
|
|
19
|
+
"streaming",
|
|
20
|
+
"cloud native",
|
|
21
|
+
"geoparquet",
|
|
22
|
+
"Apache Parquet",
|
|
23
|
+
"apache-parquet"
|
|
21
24
|
],
|
|
22
25
|
"types": "dist/index.d.ts",
|
|
23
26
|
"main": "dist/index.cjs",
|
|
@@ -58,13 +61,13 @@
|
|
|
58
61
|
"base64-js and ieee754 are used by buffer polyfill"
|
|
59
62
|
],
|
|
60
63
|
"dependencies": {
|
|
61
|
-
"@loaders.gl/arrow": "4.0.
|
|
62
|
-
"@loaders.gl/bson": "4.0.
|
|
63
|
-
"@loaders.gl/compression": "4.0.
|
|
64
|
-
"@loaders.gl/gis": "4.0.
|
|
65
|
-
"@loaders.gl/loader-utils": "4.0.
|
|
66
|
-
"@loaders.gl/schema": "4.0.
|
|
67
|
-
"@loaders.gl/wkt": "4.0.
|
|
64
|
+
"@loaders.gl/arrow": "4.1.0-alpha.2",
|
|
65
|
+
"@loaders.gl/bson": "4.1.0-alpha.2",
|
|
66
|
+
"@loaders.gl/compression": "4.1.0-alpha.2",
|
|
67
|
+
"@loaders.gl/gis": "4.1.0-alpha.2",
|
|
68
|
+
"@loaders.gl/loader-utils": "4.1.0-alpha.2",
|
|
69
|
+
"@loaders.gl/schema": "4.1.0-alpha.2",
|
|
70
|
+
"@loaders.gl/wkt": "4.1.0-alpha.2",
|
|
68
71
|
"async-mutex": "^0.2.2",
|
|
69
72
|
"base64-js": "^1.3.1",
|
|
70
73
|
"brotli": "^1.3.2",
|
|
@@ -90,5 +93,5 @@
|
|
|
90
93
|
"@types/varint": "^5.0.0",
|
|
91
94
|
"apache-arrow": "^13.0.0"
|
|
92
95
|
},
|
|
93
|
-
"gitHead": "
|
|
96
|
+
"gitHead": "a248382edd20e846c1ccb23c15d089fb9b368dbc"
|
|
94
97
|
}
|
package/src/index.ts
CHANGED
|
@@ -3,74 +3,21 @@
|
|
|
3
3
|
|
|
4
4
|
export {Buffer} from './polyfills/buffer/install-buffer-polyfill';
|
|
5
5
|
|
|
6
|
-
import type {LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
7
|
-
import type {
|
|
8
|
-
ObjectRowTable,
|
|
9
|
-
ObjectRowTableBatch,
|
|
10
|
-
ColumnarTable,
|
|
11
|
-
ColumnarTableBatch,
|
|
12
|
-
GeoJSONTable,
|
|
13
|
-
GeoJSONTableBatch
|
|
14
|
-
} from '@loaders.gl/schema';
|
|
15
|
-
|
|
16
6
|
// import {ArrowTable, ArrowTableBatch} from '@loaders.gl/arrow';
|
|
17
7
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
8
|
+
export {
|
|
9
|
+
ParquetWorkerLoader,
|
|
10
|
+
ParquetLoader,
|
|
11
|
+
GeoParquetWorkerLoader,
|
|
12
|
+
GeoParquetLoader,
|
|
13
|
+
ParquetColumnarWorkerLoader,
|
|
14
|
+
ParquetColumnarLoader
|
|
25
15
|
} from './parquet-loader';
|
|
26
|
-
import {parseParquetFile, parseParquetFileInBatches} from './lib/parsers/parse-parquet-to-rows';
|
|
27
|
-
import {
|
|
28
|
-
parseParquetFileInColumns,
|
|
29
|
-
parseParquetFileInColumnarBatches
|
|
30
|
-
} from './lib/parsers/parse-parquet-to-columns';
|
|
31
16
|
|
|
32
17
|
// import type {ParquetWasmLoaderOptions} from './lib/wasm/parse-parquet-wasm';
|
|
33
18
|
// import {parseParquetWasm} from './lib/wasm/parse-parquet-wasm';
|
|
34
19
|
// import {ParquetWasmLoader as ParquetWasmWorkerLoader} from './parquet-wasm-loader';
|
|
35
20
|
|
|
36
|
-
export {ParquetWorkerLoader};
|
|
37
|
-
// export {ParquetWasmWorkerLoader};
|
|
38
|
-
|
|
39
|
-
/** ParquetJS table loader */
|
|
40
|
-
export const ParquetLoader: LoaderWithParser<
|
|
41
|
-
ObjectRowTable | GeoJSONTable,
|
|
42
|
-
ObjectRowTableBatch | GeoJSONTableBatch,
|
|
43
|
-
ParquetLoaderOptions
|
|
44
|
-
> = {
|
|
45
|
-
...ParquetWorkerLoader,
|
|
46
|
-
parse(arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) {
|
|
47
|
-
return parseParquetFile(new BlobFile(arrayBuffer), options);
|
|
48
|
-
},
|
|
49
|
-
parseFile: parseParquetFile,
|
|
50
|
-
parseFileInBatches: parseParquetFileInBatches
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
/** ParquetJS table loader */
|
|
54
|
-
export const ParquetColumnarLoader: LoaderWithParser<
|
|
55
|
-
ColumnarTable,
|
|
56
|
-
ColumnarTableBatch,
|
|
57
|
-
ParquetLoaderOptions
|
|
58
|
-
> = {
|
|
59
|
-
...ParquetColumnarWorkerLoader,
|
|
60
|
-
parse(arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) {
|
|
61
|
-
return parseParquetFileInColumns(new BlobFile(arrayBuffer), options);
|
|
62
|
-
},
|
|
63
|
-
parseFile: parseParquetFileInColumns,
|
|
64
|
-
parseFileInBatches: parseParquetFileInColumnarBatches
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
// export const ParquetWasmLoader: LoaderWithParser<ArrowTable, never, ParquetWasmLoaderOptions> = {
|
|
68
|
-
// ...ParquetWasmWorkerLoader,
|
|
69
|
-
// parse: parseParquetWasm
|
|
70
|
-
// };
|
|
71
|
-
|
|
72
|
-
// ParquetWriter
|
|
73
|
-
|
|
74
21
|
export {ParquetWriter as _ParquetWriter} from './parquet-writer';
|
|
75
22
|
// export {ParquetWasmWriter} from './parquet-wasm-writer';
|
|
76
23
|
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import type {ReadableFile} from '@loaders.gl/loader-utils';
|
|
5
|
+
import type {
|
|
6
|
+
GeoJSONTable,
|
|
7
|
+
GeoJSONTableBatch,
|
|
8
|
+
ObjectRowTable,
|
|
9
|
+
ObjectRowTableBatch
|
|
10
|
+
} from '@loaders.gl/schema';
|
|
11
|
+
import {convertWKBTableToGeoJSON} from '@loaders.gl/gis';
|
|
12
|
+
import {WKTLoader, WKBLoader} from '@loaders.gl/wkt';
|
|
13
|
+
|
|
14
|
+
import type {ParquetLoaderOptions} from '../../parquet-loader';
|
|
15
|
+
|
|
16
|
+
import {parseParquetFile, parseParquetFileInBatches} from './parse-parquet';
|
|
17
|
+
|
|
18
|
+
export async function parseGeoParquetFile(
|
|
19
|
+
file: ReadableFile,
|
|
20
|
+
options?: ParquetLoaderOptions
|
|
21
|
+
): Promise<ObjectRowTable | GeoJSONTable> {
|
|
22
|
+
const table = await parseParquetFile(file, {...options, shape: 'object-row-table'});
|
|
23
|
+
const shape = options?.parquet?.shape;
|
|
24
|
+
return convertTable(table, shape);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export async function* parseGeoParquetFileInBatches(
|
|
28
|
+
file: ReadableFile,
|
|
29
|
+
options?: ParquetLoaderOptions
|
|
30
|
+
): AsyncIterable<ObjectRowTableBatch | GeoJSONTableBatch> {
|
|
31
|
+
const tableBatches = parseParquetFileInBatches(file, {...options, shape: 'object-row-table'});
|
|
32
|
+
|
|
33
|
+
for await (const batch of tableBatches) {
|
|
34
|
+
const shape = options?.parquet?.shape;
|
|
35
|
+
yield convertBatch(batch, shape);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function convertTable(
|
|
40
|
+
objectRowTable: ObjectRowTable,
|
|
41
|
+
shape?: 'object-row-table' | 'geojson-table'
|
|
42
|
+
): ObjectRowTable | GeoJSONTable {
|
|
43
|
+
switch (shape) {
|
|
44
|
+
case 'object-row-table':
|
|
45
|
+
return objectRowTable;
|
|
46
|
+
|
|
47
|
+
case 'geojson-table':
|
|
48
|
+
try {
|
|
49
|
+
return convertWKBTableToGeoJSON(objectRowTable, objectRowTable.schema!, [
|
|
50
|
+
WKTLoader,
|
|
51
|
+
WKBLoader
|
|
52
|
+
]);
|
|
53
|
+
} catch (error) {
|
|
54
|
+
return objectRowTable;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
default:
|
|
58
|
+
throw new Error(shape);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function convertBatch(
|
|
63
|
+
objectRowBatch: ObjectRowTableBatch,
|
|
64
|
+
shape?: 'object-row-table' | 'geojson-table'
|
|
65
|
+
): ObjectRowTableBatch | GeoJSONTableBatch {
|
|
66
|
+
switch (shape) {
|
|
67
|
+
case 'object-row-table':
|
|
68
|
+
return objectRowBatch;
|
|
69
|
+
|
|
70
|
+
case 'geojson-table':
|
|
71
|
+
try {
|
|
72
|
+
const geojsonTable = convertWKBTableToGeoJSON(objectRowBatch, objectRowBatch.schema!, [
|
|
73
|
+
WKTLoader,
|
|
74
|
+
WKBLoader
|
|
75
|
+
]);
|
|
76
|
+
return {
|
|
77
|
+
...objectRowBatch,
|
|
78
|
+
...geojsonTable
|
|
79
|
+
};
|
|
80
|
+
} catch (error) {
|
|
81
|
+
return objectRowBatch;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
default:
|
|
85
|
+
throw new Error(shape);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -11,6 +11,9 @@ import {materializeColumns} from '../../parquetjs/schema/shred';
|
|
|
11
11
|
import {getSchemaFromParquetReader} from './get-parquet-schema';
|
|
12
12
|
import {installBufferPolyfill} from '../../polyfills/buffer';
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated
|
|
16
|
+
*/
|
|
14
17
|
export async function parseParquetFileInColumns(
|
|
15
18
|
file: ReadableFile,
|
|
16
19
|
options?: ParquetLoaderOptions
|
|
@@ -26,6 +29,9 @@ export async function parseParquetFileInColumns(
|
|
|
26
29
|
throw new Error('empty table');
|
|
27
30
|
}
|
|
28
31
|
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated
|
|
34
|
+
*/
|
|
29
35
|
export async function* parseParquetFileInColumnarBatches(
|
|
30
36
|
file: ReadableFile,
|
|
31
37
|
options?: ParquetLoaderOptions
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
3
4
|
import type {ReadableFile} from '@loaders.gl/loader-utils';
|
|
4
|
-
import type {
|
|
5
|
-
GeoJSONTable,
|
|
6
|
-
GeoJSONTableBatch,
|
|
7
|
-
ObjectRowTable,
|
|
8
|
-
ObjectRowTableBatch
|
|
9
|
-
} from '@loaders.gl/schema';
|
|
10
|
-
import {convertWKBTableToGeoJSON} from '@loaders.gl/gis';
|
|
11
|
-
import {WKTLoader, WKBLoader} from '@loaders.gl/wkt';
|
|
5
|
+
import type {ObjectRowTable, ObjectRowTableBatch} from '@loaders.gl/schema';
|
|
12
6
|
|
|
13
7
|
import type {ParquetLoaderOptions} from '../../parquet-loader';
|
|
14
8
|
import type {ParquetRow} from '../../parquetjs/schema/declare';
|
|
@@ -16,10 +10,16 @@ import {ParquetReader} from '../../parquetjs/parser/parquet-reader';
|
|
|
16
10
|
import {getSchemaFromParquetReader} from './get-parquet-schema';
|
|
17
11
|
import {installBufferPolyfill} from '../../polyfills/buffer';
|
|
18
12
|
|
|
13
|
+
/**
|
|
14
|
+
* * Parse a parquet file using parquetjs
|
|
15
|
+
* @param file
|
|
16
|
+
* @param options
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
19
|
export async function parseParquetFile(
|
|
20
20
|
file: ReadableFile,
|
|
21
21
|
options?: ParquetLoaderOptions
|
|
22
|
-
): Promise<ObjectRowTable
|
|
22
|
+
): Promise<ObjectRowTable> {
|
|
23
23
|
installBufferPolyfill();
|
|
24
24
|
|
|
25
25
|
const reader = new ParquetReader(file, {
|
|
@@ -47,10 +47,15 @@ export async function parseParquetFile(
|
|
|
47
47
|
return convertTable(objectRowTable, shape);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Parse a parquet file in batches using parquetjs
|
|
52
|
+
* @param file
|
|
53
|
+
* @param options
|
|
54
|
+
*/
|
|
50
55
|
export async function* parseParquetFileInBatches(
|
|
51
56
|
file: ReadableFile,
|
|
52
57
|
options?: ParquetLoaderOptions
|
|
53
|
-
): AsyncIterable<ObjectRowTableBatch
|
|
58
|
+
): AsyncIterable<ObjectRowTableBatch> {
|
|
54
59
|
const reader = new ParquetReader(file, {
|
|
55
60
|
preserveBinary: options?.parquet?.preserveBinary
|
|
56
61
|
});
|
|
@@ -78,20 +83,14 @@ export async function* parseParquetFileInBatches(
|
|
|
78
83
|
function convertTable(
|
|
79
84
|
objectRowTable: ObjectRowTable,
|
|
80
85
|
shape?: 'object-row-table' | 'geojson-table'
|
|
81
|
-
): ObjectRowTable
|
|
86
|
+
): ObjectRowTable {
|
|
82
87
|
switch (shape) {
|
|
83
88
|
case 'object-row-table':
|
|
84
89
|
return objectRowTable;
|
|
85
90
|
|
|
91
|
+
// Hack until geoparquet fixes up forwarded shape
|
|
86
92
|
case 'geojson-table':
|
|
87
|
-
|
|
88
|
-
return convertWKBTableToGeoJSON(objectRowTable, objectRowTable.schema!, [
|
|
89
|
-
WKTLoader,
|
|
90
|
-
WKBLoader
|
|
91
|
-
]);
|
|
92
|
-
} catch (error) {
|
|
93
|
-
return objectRowTable;
|
|
94
|
-
}
|
|
93
|
+
return objectRowTable;
|
|
95
94
|
|
|
96
95
|
default:
|
|
97
96
|
throw new Error(shape);
|