Databend 玩转 Local 模式

简介: ❯ bend-local --query "select $1, $2 from 'http://www.geoplugin.net/csv.gp?ip=3.3.3.3' (file_format => 'csv') "分析系统进程 ,找出每个用户占用的内存

目前开发者们需要尝鲜 Databend, 可以选择使用 Databend Cloud 或者按官方文档部署 Databend 服务。 由于 Databend 架构有三层,因此部署 Databend 服务一般需要启动 databend-query, databend-meta , minio 三个进程,同时需要修改端口等配置项,流程上略显复杂。 有没有更快的方式可以快速尝鲜 Databend 呢?

Python Binding
一种快速的方式是将 Databend 跑在 python 中,借助 rust 优良的生态,我们基于 pyo3 库发布了 python binding,可以在本地 juypter 或者 colab 等在线服务中使用 Databend:

pip install databend

from databend import SessionContext

ctx = SessionContext()

df = ctx.sql("select number, number + 1, number::String as number_p_1 from numbers(8)")

convert to pyarrow

df.to_py_arrow()

convert to pandas

df.to_pandas()
Databend Local 模式
借鉴于 clickhouse-local , duckdb 等嵌入型数据库的优点,我们在 Databend 中也可以开启 local 模式。

local 模式 是一个 Databend 的简易版本,用户无需部署 Databend 服务即可在命令中 用 SQL 和 Databend 交互。它的好处在于简化了开发安装,同时方便开发者们用 SQL 使用 Databend 支持的功能进行简单的数据处理。 如果你需要在生产环境使用 Databend,我们建议按官网推荐部署 Databend 服务 或 Databend Cloud,但如果你是开发人员或测试工程师,你可以使用 local 模式 来玩转 Databend。

local 模式将启动一个临时的 databend-query 进程,这个进程融合了客户端和服务端,并且他的存储是在临时目录中,生命周期跟随进程,进程离开后资源也将销毁,你可以在一个服务器中启动多个 local 进程,他们的资源是相互隔离的。

下面通过例子介绍一下,每个例子都是简短的几行命令,介绍 local 模式可以实现什么功能。

在这之前,你需要下载 databend-query 二进制,然后将二进制放到 PATH 环境变量中,植入 bend-local 工具别名

alias bend-local="databend-query local"
命令行交互 (REPL) 模式

直接在终端输入 bend-local 这一行命令后,我们将进入 REPL 模式,这里融合了客户端和服务端,类似 duckdb cli 工具使用。
❯ bend-local
Welcome to Databend, version v1.2.4-nightly-326cabe38056168dd261f744609ea85319f02686(rust-1.72.0-nightly-2023-09-02T15:18:48.006847567Z).

databend-local:) select max(a) from range(1,1000) t(a);
┌────────────┐
│ max(a) │
│ Int64 NULL │
├────────────┤
│ 999 │
└────────────┘
1 row result in 0.036 sec. Processed 999 rows, 999 B (27.89 thousand rows/s, 217.90 KiB/s)

databend-local:)
值得注意的是,bend-local 支持配置文件 ~/.config/databend/config.toml 来做一些个性化客户端配置,配置文件的格式和 bendsql 是兼容的。

一行命令生成一个 parquet 文件

支持 --query, --output-format 参数 传入查询 SQL 和输出格式
bend-local --query "select number, number + 1 as b from numbers(10)" --output-format parquet > /tmp/a.parquet
Shell pipe 模式分析数据,$STDIN 宏将解析 stdin 流作为一个临时 stage 表

❯ echo '3,4' | bend-local -q "select $1 a, $2 b from $STDIN (file_format => 'csv') " --output-format table

SELECT $1 AS a, $2 AS b FROM 'fs:///dev/fd/0' (FILE_FORMAT => 'csv')

┌─────────────────┐
│ a │ b │
│ String │ String │
├────────┼────────┤
│ '3' │ '4' │
└─────────────────┘
注意上面的 SQL 在 shell 中,使用了 $ 来对 shell 进行转义

读取 stage table (本地文件,外部 s3 等)

❯ bend-local --query "select count() from 'fs:///tmp/a.parquet' (file_format => 'parquet') "
10

❯ bend-local --query "select count() from 'https://datafuse-1253727613.cos.ap-hongkong.myqcloud.com/data/books.parquet' (file_format => 'parquet') "
2

❯ bend-local --query "select $1, $2 from 'http://www.geoplugin.net/csv.gp?ip=3.3.3.3' (file_format => 'csv') "
分析系统进程 ,找出每个用户占用的内存

❯ ps aux | tail -n +2 | awk '{ printf("%s\t%s\n", $1, $4) }' | bend-local -q "select $1 as user, sum($2::double) as memory from $STDIN (file_format => 'tsv') group by user "
sundy 9.100000000000001
root 1.2
dbus 0.0

数据清洗,将一个格式转换为其他格式 (支持 csv, tsv, parquet, ndjson 等)

❯ bend-local -q 'select rand() as a, rand() as b from numbers(100)' > /tmp/a.tsv

❯ cat /tmp/a.tsv | bend-local -q "select $1 a, $2 b from $STDIN (file_format => 'tsv') " --output-format parquet > /tmp/a.parquet
其他好玩的分析例子,等待你的挖掘

相关文章
|
关系型数据库 MySQL Linux
airflow安装教程(local模式)
airflow安装教程(local模式)
airflow安装教程(local模式)
|
分布式计算 资源调度 Hadoop
十二、Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)
十二、Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)
1030 0
十二、Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)
|
8月前
|
SQL API 流计算
实时计算 Flink版产品使用合集之在Mac M1下的Docker环境中开启SQL Server代理的操作步骤是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
272 1
|
5月前
|
存储 SQL 关系型数据库
ADBPG&Greenplum成本优化问题之配置分层存储的默认Foreign Server如何解决
ADBPG&Greenplum成本优化问题之配置分层存储的默认Foreign Server如何解决
40 2
|
6月前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之 Spark Local模式启动报错,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
6月前
|
SQL 存储 Oracle
TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入
**TDengine 3.3.2.0 发布摘要** - 开源与企业版均强化性能,提升WebSocket、stmt模式写入与查询效率,解决死锁,增强列显示。 - taos-explorer支持geometry和varbinary类型。 - 企业版引入UDT,允许自定义数据转换。 - 新增Oracle和SQL Server数据接入。 - 数据同步优化,支持压缩,提升元数据同步速度,错误信息细化,支持表名修改。 - 扩展跨平台支持,包括麒麟、Euler、Anolis OS等。
141 0
|
8月前
|
数据库 流计算 数据格式
Greenplum【部署 06】GPSS扩展(Greenplum Streaming Server)安装启用配置启动(不断更新ing)
Greenplum【部署 06】GPSS扩展(Greenplum Streaming Server)安装启用配置启动(不断更新ing)
126 0
|
8月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之如何配置server-id
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
安全
将云数据仓库ADB的Solr集群的host更改为公网地址
将云数据仓库ADB的Solr集群的host更改为公网地址
89 3
|
存储 分布式计算 资源调度
Spark本地环境搭建(local模式)
Spark本地环境搭建(local模式)

热门文章

最新文章

下一篇
开通oss服务