--- title: Databend 开源周报第 83 期 description: slug: databend-weekly-83 date: 2023-03-06 tags: [weekly] cover_url: databend-weekly.svg image: databend-weekly.png authors: - datafuselabs --- # Databend 开源周报 第 83 期 ![databend weekly](https://i.imgur.com/DqRbPYS.png) > 英文版移步:https://databend.rs/blog/2023-03-03-databend-weekly > > [Databend](https://github.com/datafuselabs/databend) 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:[https://app.databend.com](https://app.databend.com) 。 ## What's New 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 ### Support for WebHDFS HDFS 是大数据生态中流行的分布式文件系统,也是 Databend 支持的存储后端之一。但要在此前的实现中,如果要访问 HDFS 存储后端就不得不依赖 Java 环境和特定的 jar 包,不太方便。 WebHDFS 是一种 REST API,通过 HTTP 提供 HDFS 操作接口,Databend 现在支持使用 WebHDFS 作为存储后端,不再需要使用 Java 环境,使用起来会更加方便。 ```sql #> CREATE STAGE IF NOT EXISTS whdfs URL='webhdfs://127.0.0.1:9870/data-files/' CONNECTION=(HTTPS='false'); Query OK, 0 rows affected (0.020 sec) #> CREATE TABLE IF NOT EXISTS books ( title VARCHAR, author VARCHAR, date VARCHAR ); Query OK, 0 rows affected (0.030 sec) #> COPY INTO books FROM @whdfs FILES=('books.csv') file_format=(type=CSV field_delimiter=',' record_delimiter='\n' skip_header=0); Query OK, 2 rows affected (0.615 sec) #> SELECT * FROM books; +------------------------------+---------------------+------+ | title | author | date | +------------------------------+---------------------+------+ | Transaction Processing | Jim Gray | 1992 | | Readings in Database Systems | Michael Stonebraker | 2004 | +------------------------------+---------------------+------+ 2 rows in set (0.044 sec) ``` 如果你对 WebHDFS 的工作机制感兴趣,可以参阅下面列出的两个 Pull Requests: - [PR | feat: backend webhdfs](https://github.com/datafuselabs/databend/pull/10285) - [PR | feat: Add support for copying from webhdfs](https://github.com/datafuselabs/databend/pull/10156) ### Support for Aggregation Spilling to Object Storage 大数据处理时需要解决的一个重要挑战是:如何高效、可靠地执行 Group By 和 Order By 操作。为了解决这个问题,Databend 社区正在开发一项新功能,它将会支持将中间结果溢出到像 AWS S3 这样的云对象存储。 这个功能落地后可以帮助 Databend 轻松处理涉及海量数据的 Group By 和 Order By 查询,而不会耗尽内存或影响性能。如果你对这个功能的原理和实现感兴趣,可以参阅这个 Pull Request: - [PR | feat(query): support aggregate spill to object storage](https://github.com/datafuselabs/databend/pull/10273) ### Decimal Data Types Databend 支持对多种数据类型的数据进行分析处理。近期的改进集中在 Decimal 类型上,该类型允许指定数值的精确度和计数方式。在财务计算等对高精度有依赖的场景,推荐使用 Decimal 类型。 ```sql -- Create a table with decimal data type. create table decimal(value decimal(36, 18)); -- Insert two values. insert into decimal values(0.152587668674722117), (0.017820781941443176); select * from decimal; +----------------------+ | value | +----------------------+ | 0.152587668674722117 | | 0.017820781941443176 | +----------------------+ ``` 如果你对 Databend 的 Decimal 类型感兴趣,可以参阅这篇文档: - [Docs | Data Types - Decimal](https://databend.rs/doc/sql-reference/data-types/data-type-decimal-types). ## What's Up Next 我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。 ### 编译时初始化 `regex` [federated_helper.rs](https://github.com/datafuselabs/databend/blob/main/src/query/service/src/servers/federated_helper.rs) 中使用了大量正则表达式来匹配查询。 ```rust use regex::bytes::RegexSet; let regex_set = RegexSet::new(regex_rules).unwrap(); let matches = regex_set.matches(query.as_ref()); ``` 如果能在编译时初始化 [`regex`](https://crates.io/crates/regex) ,可能会带来一些优化。 [Issue 10286: Feature: make regexp initialized at compile time](https://github.com/datafuselabs/databend/issues/10286) 如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 https://link.databend.rs/i-m-feeling-lucky 来挑选一个随机问题,祝好运! ## New Contributors 一起认识社区中的新伙伴,Databend 因你们而变得更加美好 - [@xinlifoobar](https://github.com/xinlifoobar) 实现 `show table` 时不再显示 `SNAPSHOT_LOCATION`,[#10164](https://github.com/datafuselabs/databend/issues/10164) - [@wangjili8417](https://github.com/wangjili8417) 帮忙重新组织了转换函数相关的文档,[#10255](https://github.com/datafuselabs/databend/issues/10255) - [@dusx1981](https://github.com/wangjili8417) 引入位图来记录 planner 规则,[#10024](https://github.com/datafuselabs/databend/issues/10024) ## Changelog 前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。 地址:https://github.com/datafuselabs/databend/releases ## Contributors 非常感谢贡献者们在本周的卓越工作。 ![](https://i.imgur.com/1T4lPB6.png) ## Connect With Us Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。 - [Databend Website](https://databend.rs) - [GitHub Discussions](https://github.com/datafuselabs/databend/discussions) - [Twitter](https://twitter.com/Datafuse_Labs) - [Slack Channel](https://link.databend.rs/join-slack)