Apache Arrow - v21.1.0
    正在准备搜索索引...

    Apache Arrow - v21.1.0

    Apache Arrow JavaScript

    npm version

    Apache Arrow 是一种通用的列式格式和多语言工具箱,用于快速数据交换和内存分析。它包含一组技术,使数据系统能够高效地存储、处理和移动数据。

    npm install apache-arrowyarn add apache-arrow

    (请参阅下方关于我们如何打包 apache-arrow 的内容)

    Apache Arrow 是一种列式内存布局规范,用于编码平面和嵌套数据的向量和类表容器。Arrow 规范在内存中对齐列式数据,以最大限度地减少缓存未命中,并利用现代处理器上的最新 SIMD(单指令多数据)和 GPU 操作。

    Apache Arrow 正在成为大型内存列式数据(SparkPandasDrillGraphistry 等)的新兴标准。通过标准化通用的二进制交换格式,大数据系统可以降低与跨系统通信相关的成本和摩擦。

    查看我们的 API 文档,了解如何使用 Apache Arrow JavaScript。您还可以通过查看以下资源来学习示例:

    import { readFileSync } from 'fs';
    import { tableFromIPC } from 'apache-arrow';

    const arrow = readFileSync('simple.arrow');
    const table = tableFromIPC(arrow);

    console.table(table.toArray());

    /*
    foo, bar, baz
    1, 1, aa
    null, null, null
    3, null, null
    4, 4, bbb
    5, 5, cccc
    */
    import { readFileSync } from 'fs';
    import { tableFromIPC } from 'apache-arrow';

    const table = tableFromIPC([
    'latlong/schema.arrow',
    'latlong/records.arrow'
    ].map((file) => readFileSync(file)));

    console.table([...table]);

    /*
    origin_lat, origin_lon
    35.393089294433594, -97.6007308959961
    35.393089294433594, -97.6007308959961
    35.393089294433594, -97.6007308959961
    29.533695220947266, -98.46977996826172
    29.533695220947266, -98.46977996826172
    */
    import { tableFromArrays } from 'apache-arrow';

    const LENGTH = 2000;

    const rainAmounts = Float32Array.from(
    { length: LENGTH },
    () => Number((Math.random() * 20).toFixed(1)));

    const rainDates = Array.from(
    { length: LENGTH },
    (_, i) => new Date(Date.now() - 1000 * 60 * 60 * 24 * i));

    const rainfall = tableFromArrays({
    precipitation: rainAmounts,
    date: rainDates
    });

    console.table([...rainfall]);
    import { tableFromIPC } from "apache-arrow";

    const table = await tableFromIPC(fetch("/simple.arrow"));

    console.table([...table]);

    您可以使用 makeVector 从 JavaScript 类型化数组创建向量,并使用 vectorFromArray 从 JavaScript 数组创建向量。makeVector 速度快得多,并且不需要复制。

    import { makeVector } from "apache-arrow";

    const LENGTH = 2000;

    const rainAmounts = Float32Array.from(
    { length: LENGTH },
    () => Number((Math.random() * 20).toFixed(1)));

    const vector = makeVector(rainAmounts);

    const typed = vector.toArray()

    assert(typed instanceof Float32Array);

    for (let i = -1, n = vector.length; ++i < n;) {
    assert(vector.get(i) === typed[i]);
    }

    字符串可以编码为 UTF-8 或字典编码的 UTF-8。字典编码可以更有效地编码重复值。您可以使用 vectorFromArray 方便地创建字典编码字符串,或使用 makeVector 高效地创建。

    import { makeVector, vectorFromArray, Dictionary, Uint8, Utf8 } from "apache-arrow";

    const utf8Vector = vectorFromArray(['foo', 'bar', 'baz'], new Utf8);

    const dictionaryVector1 = vectorFromArray(
    ['foo', 'bar', 'baz', 'foo', 'bar']
    );

    const dictionaryVector2 = makeVector({
    data: [0, 1, 2, 0, 1], // indexes into the dictionary
    dictionary: utf8Vector,
    type: new Dictionary(new Utf8, new Uint8)
    });

    请参阅 DEVELOP.md

    即使您不打算为 Apache Arrow 本身或在其他项目中集成 Arrow 做出贡献,我们也欢迎您的参与。

    我们更喜欢通过 GitHub 拉取请求的形式接收贡献。请向 github.com/apache/arrow-js 仓库发送拉取请求。

    如果您正在寻找贡献的一些想法,请查看 Apache Arrow 项目的 GitHub issues。在问题下评论和/或通过 dev@arrow.apache.org 联系我们提出您的问题和想法。

    如果您想报告一个 bug 但没有时间修复它,您仍然可以在 GitHub issues 上发布,或发送电子邮件到邮件列表 dev@arrow.apache.org

    apache-arrow 是用 TypeScript 编写的,但项目被编译为多个 JS 版本和常见的模块格式。

    为了方便起见,基础的 apache-arrow 包包含了所有编译目标,但如果您关心 node_modules 的占用空间,我们已经为您考虑到了。

    这些目标也发布在 @apache-arrow 命名空间下。

    npm install apache-arrow # <-- combined es2015/CommonJS/ESModules/UMD + esnext/UMD
    npm install @apache-arrow/ts # standalone TypeScript package
    npm install @apache-arrow/es5-cjs # standalone es5/CommonJS package
    npm install @apache-arrow/es5-esm # standalone es5/ESModules package
    npm install @apache-arrow/es5-umd # standalone es5/UMD package
    npm install @apache-arrow/es2015-cjs # standalone es2015/CommonJS package
    npm install @apache-arrow/es2015-esm # standalone es2015/ESModules package
    npm install @apache-arrow/es2015-umd # standalone es2015/UMD package
    npm install @apache-arrow/esnext-cjs # standalone esNext/CommonJS package
    npm install @apache-arrow/esnext-esm # standalone esNext/ESModules package
    npm install @apache-arrow/esnext-umd # standalone esNext/UMD package

    JS 社区是一个多元化的群体,拥有各种目标环境和工具链。发布多个包可以适应各种类型的项目。

    如果您认为我们遗漏了一个编译目标,并且这阻碍了采用,请提出一个问题。

    我们编译的捆绑包支持过去 5 年发布的现代浏览器。这包括 Firefox、Chrome、Edge 和 Safari 的受支持版本。我们不积极支持 Internet Explorer。Apache Arrow 也可在 Node 的维护版本上运行。

    更广泛的 Apache Arrow 提交者完整列表。

    • Brian Hulette,提交者
    • Paul Taylor,提交者
    • Dominik Moritz,提交者

    更广泛的 Apache Arrow 项目和组织完整列表。

    • Apache Arrow -- 驱动列式内存分析的父项目,包括附属的开源项目
    • Perspective -- Perspective 是一个交互式分析和数据可视化组件,非常适合大型和/或流式数据集。Perspective 利用编译为 WebAssembly 的 Arrow C++。
    • Falcon 是一种可视化工具,用于跨数百万或数十亿记录的多个聚合可视化进行链接交互。
    • Vega 是一个用于网络交互式可视化的工具生态系统。Vega 团队实现了一个 Arrow 加载器
    • Arquero 是一个用于对数组支持的数据表进行查询处理和转换的库。
    • OmniSci 是一个 GPU 数据库。其 JavaScript 连接器返回 Arrow 数据帧。

    Apache 2.0