1 个不稳定版本
0.1.0 | 2022年5月29日 |
---|
#18 在 #query-execution
2MB
2.5K SLoC
datafusion-tui (dft)
DataFusion-tui 提供了一个可扩展的基于终端的数据分析工具,使用 DataFusion(单节点)和 Ballista(分布式)作为查询执行引擎。它从 datafusion-cli 中吸取了灵感和一些特性。与 datafusion-cli 不同,dft 的重点是为利用 DataFusion 的可扩展性提供接口(例如连接到 ObjectStore 或查询自定义 TableProvider)。
dft 的目标是让用户拥有一个自己的本地数据库,允许他们从终端查询和连接来自不同数据源的数据。
https://user-images.githubusercontent.com/622789/161690194-c7c1e1b0-e432-43ab-9e44-f7673868b9cb.mp4
当前和计划中的功能包括
- 标签管理,以提供 DataFusion 查询、结果和上下文的整洁和结构化组织
- SQL 编辑器
- 用于编写 SQL 查询的文本编辑器
- 可滚动查询结果
- 查询过程中的内存使用情况(待办事项)
- 将查询结果写入文件(待办事项)
- 多个 SQL 编辑器标签(待办事项)
- 查询历史记录
- 已执行查询的历史记录
- ExecutionContext 信息
- ExecutionContext / 目录 / ObjectStore / 状态 / 配置的信息
- 日志
- dft 和 DataFusion 的日志
- SQL 编辑器
- ObjectStore 支持
- S3 使用 AWS 默认凭证
- S3 使用自定义端点/提供者(例如 MinIO)
- HDFS(待办事项)
- ObjectStore 探索器。例如,能够列出 ObjectStore 中的文件
- DataFusion 正在讨论采用新的 ObjectStore 接口,该接口将包含与 S3、ADLS 和 GCP 的绑定。我正在关注此事,并计划在可用时更新以使用该接口。
- TableProvider 数据源
- Delta Table => TODO
- Google Big Table =>(目前在大表分支中,该分支没有与最新的 DataFusion 保持同步)
- ApiTable => 将允许通过处理分页和身份验证将 API 端点视为表。目前在该 pull request 中进行原型设计:#85
- 从
~/.datafusion/.datafusionrc
预加载 DDL 以在启动时提供本地数据库
用户指南
为了获得最佳体验,强烈建议您在~/.datafusion/.datafusionrc
中定义所有DDL,以便在启动时即可查询您想要的任何表。此外,由于DataFusion现在支持通过sql执行CREATE VIEW
,您也可以根据这些表创建一个VIEW
。
界面分为几个标签页,以便以干净有序的方式查看和控制相关信息。当不编写SQL查询时,可以输入键来导航和控制界面。
- SQL编辑器:在此处输入查询,并可以查看结果。借鉴vim的设计,有多个模式。
- 普通模式
q
=> 退出datafusion-tuie
=> 以编辑模式启动SQL编辑器c
=> 清除SQL编辑器的内容Enter
=> 执行查询- 在标签名称后输入括号内的标签页编号,以跳转到该标签页
- 如果查询结果比屏幕长或宽,可以使用箭头键进行滚动
- 编辑模式
- 字符键用于编写查询
- 退格键/制表符/Enter键与普通模式相同
esc
退出编辑模式并返回普通模式
- Rc模式
l
将~/.datafusion/.datafusionrc
加载到编辑器中r
重新运行~/.datafusion/.datafusionrc
w
将编辑器内容写入~/.datafusion/.datafusionrc
- 普通模式
- 注册自定义
ObjectStore
- S3: 使用
--features=s3
运行/安装- 如果您想使用默认的AWS凭证,则无需采取进一步操作。例如,您的凭证在
~/.aws/credentials
中会自动被识别。 - 如果您想使用自定义的S3提供者,例如MinIO,那么您必须在
~/.datafusion/object_stores/
中创建一个带有字段endpoint
、access_key_id
和secret_access_key
的s3.json
配置文件。
- 如果您想使用默认的AWS凭证,则无需采取进一步操作。例如,您的凭证在
- S3: 使用
依赖项
~82MB
~1.5M SLoC