• Databend 开源周报第 111 期


    Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务https://app.databend.cn 。

    What's On In Databend

    探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。

    理解 SHARE ENDPOINT

    SHARE ENDPOINT 是 Databend 数据共享中的一个重要概念,用于指定数据共享实例的端点和租户名称。数据的访问方和使用方需要定义 SHARE POINT 来帮助 Databend 实例定位和访问与其共享的数据。

    例如,如果租户 A 对租户 B 共享数据,那么租户 B 需要创建对应的 SHARE ENDPOINT,使租户 B 所处的实例能够定位和访问共享的数据。

    1. CREATE SHARE ENDPOINT IF NOT EXISTS from_TenantA
    2. URL = ''
    3. TENANT = A
    4. COMMENT = 'Share endpoint to access data from Tenant A';

    如果您想了解更多信息,请查看下面列出的资源。

    Code Corner

    一起来探索 Databend 和周边生态中的代码片段或项目。

    使用 Python 创建 UDF

    Databend 现在支持 UDF Server 以提供更灵活和实用的函数自定义能力。用户可以使用自己喜爱的编程语言,结合 Apache Arrow Flight API 实现 UDF Server 来与 Databend 交互,从而拓展数据库的边界,实现更丰富和高效的数据工作流。

    要启用这一特性,需要使用 v1.2.116-nightly 及之后版本,并在 databend-query 的配置文件中启用 UDF Server 支持和外部访问许可:

    1. [query]
    2. ...
    3. enable_udf_server = true
    4. # use your udf server address here
    5. udf_server_allow_list = ['http://0.0.0.0:8815']
    6. ...

    下面的程序展示了如何利用 Python 创建用于计算最大公约数的 UDF Server 。

    1. from udf import *
    2. # Define a function that accpets nullable values, and set skip_null to True to enable it returns NULL if any argument is NULL.
    3. @udf(
    4. input_types=["INT", "INT"],
    5. result_type="INT",
    6. skip_null=True,
    7. )
    8. def gcd(x: int, y: int) -> int:
    9. while y != 0:
    10. (x, y) = (y, x % y)
    11. return x
    12. if __name__ == '__main__':
    13. # create a UDF server listening at '0.0.0.0:8815'
    14. server = UdfServer("0.0.0.0:8815")
    15. # add defined functions
    16. server.add_function(gcd)
    17. # start the UDF server
    18. server.serve()

    对应到 Databend 中,则可以使用下面的 SQL 语句注册 UDF 。

    CREATE FUNCTION gcd (INT, INT) RETURNS INT LANGUAGE python HANDLER = 'gcd' ADDRESS = 'http://0.0.0.0:8815';

    这一功能尚在预览阶段,目前我们提供用于示例和测试的 Python SDK 文件,后续将会推出更多 SDK ,欢迎感兴趣的朋友参与到 UDF 生态共建之中。

    如果您想了解更多信息,请查看下面列出的资源。

    Highlights

    以下是一些值得注意的事件,也许您可以找到感兴趣的内容。

    • 支持 infer filter 。
    • 支持幂等删除。
    • SQLSmith 测试支持生成聚合函数、标量函数和表达式。
    • 阅读文档 Docs | INSERT INTO 和 Docs | REPLACE INTO ,了解如何使用 SQL 语句将 Stage 中数据插入到表中。

    What's Up Next

    我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。

    为 Stage 中的 Parquet 文件提供缓存支持

    Databend 为查询和内部数据支持了多种不同类型和功能缓存,以改善查询性能,比如查询混存(Query Cache)、文件元数据缓存(File Metadata Cache)、数据缓存(Data Cache)等。

    但是对于位于 Stage 的文件,还缺乏有效的缓存支持。如果能够为 Stage 中的 Parquet 提供元数据缓存或者对象缓存,将有助于改善对外置数据查询的性能。

    select * from 's3://aa/bb/cc/' (pattern => '.*.parquet')

    Issue #12762 | feat: add object cache for stage parquet file

    如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 feat: add SHOW STATUS to export more metrics · Issue #8231 · datafuselabs/databend · GitHub 来挑选一个随机问题,祝好运!

    New Contributors

    一起认识社区中的新伙伴,Databend 因你们而变得更加美好。

    Changelog

    前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。

    地址:https://github.com/datafuselabs/databend/releases

    Contributors

    非常感谢贡献者们在本周的卓越工作。

    upload1a68e202a7ef0e330d79ce89e8b333eapng

    Connect With Us

    Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

  • 相关阅读:
    HDLBits: 在线学习 SystemVerilog(十三)-Problem 72-79(卡诺图)
    JSP | 基于Servlet和JSP改造oa项目
    最详细Pycharm远程代码调试配置方案【针对GPU集群】
    一篇文章让你搞懂,Python文件操作
    关于list去除引号+报错invalid literal for int() with base 10:
    被环境变量虐过一遍获得的启示
    高压功率放大器在超声悬浮中的应用研究
    WPS如何转PDF格式?WPS转PDF怎么转?
    C++函数重载及引用
    Lib文件和netlist的关系,DDC文件和netlist的区别
  • 原文地址:https://blog.csdn.net/Databend/article/details/132990800