#sql-query #query #datafusion #sql #arrow #query-execution

bin+lib datafusion-tui

基于终端、可扩展、交互式SQL数据分析工具

1 个不稳定版本

0.1.0 2022年5月29日

#18#query-execution

Apache-2.0

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 的日志
  • 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-tui
      • e => 以编辑模式启动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/中创建一个带有字段endpointaccess_key_idsecret_access_keys3.json配置文件。

依赖项

~82MB
~1.5M SLoC