【问题标题】:Can I use `TextEncoder` in Bigquery JS UDF?我可以在 Bigquery JS UDF 中使用“TextEncoder”吗?
【发布时间】:2020-05-22 11:38:56
【问题描述】:

我正在尝试在 Bigquery 中使用一些 Rust wasm 代码作为 UDF,并且为了将 Java 字符串传递给 Rust 代码,需要 TextEncoderTextDecoder 来方便地执行此操作。正如这里提到的Passing a JavaScript string to a Rust function compiled to WebAssembly

但是当我在 BigQuery 上试用我的一些代码时,我遇到了一个错误,提示 TextEncoder 未定义。

您也可以使用如下查询进行尝试: https://github.com/liufuyang/rb62-wasm/blob/master/try-3-old.sql

不使用TextEncoder 的工作版本位于https://github.com/liufuyang/rb62-wasm/blob/master/try-3.sql

【问题讨论】:

    标签: javascript google-bigquery user-defined-functions


    【解决方案1】:

    这意味着对象没有被定义。

    作为一个选项,带上你自己的 TextEncoder。

    例如,取你的try-3-old.sql,然后在JS UDF定义的末尾添加这一行:

    return main();
    '''
    OPTIONS (library="gs://fh-bigquery/js/inexorabletash.encoding.js");
    

    现在它可以工作了:


    (想知道,rb62 的目标是什么?)

    【讨论】:

    • 谢谢,我想这正是我需要的。
    • 关于 rb62 的目标:基本上它在 Spotify 内部用于将一些 gid(128 位或 16 字节)编码/解码为基于 62 的值,如这些示例所示。我们已经有一个 js UDF 库来执行此操作。我只是在测试 1. 是否可以通过 js UDF 接口使用一些 Rust/wasm 函数来做同样的事情。 2. 速度能不能提高,因为我们通常有数百万行要解析。
    • 到目前为止我发现的是,由于不方便将 JS 字符串(utf16)值传递给 wasm Rust 代码环境(字符串在 utf8 中,这似乎也只能这样做通过通过 wasm 内存复制内容),它似乎没有获得任何性能优势,特别是在尝试将一些 JS 字符串编码库替换为 Rust 字符串编码库时?
    • 如果有用请采纳!让我们开始一个新问题,以找到一种方法来根据需要提高性能:)
    • 谢谢。我会尝试一些东西然后询问是否有必要:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多