Apache Drill 入门

Apache Drill 入门

官网地址: Apache Drill

视频教程地址1: Apache Drill

为什么选择Apache Drill

无处不在

几乎可以查询任何类型的NoSQL数据库

image

Drill支持多种类型的NoSQL数据库和文件系统, 包含 Hbase、MongoDB、ElasticSearch、Cassandra、Druid、Kudu、Kafka、OpenTSDB、HDFS、Amazon S3、Azure Blob Storage、Google Cloud Storage、Swift、NAS和本地文件。可以在单次查询中组合多个数据源(联邦查询)。

Drill的存储感知优化器会利用数据存储的内部处理能力来重构查询计划。Drill还支持数据本地性(Data Locality),所以将Drill和数据节点部署在一起可以充分优化性能。

告别繁冗

充分享受数据应用的敏捷性

SELECT * FROM dfs.root.`/web/logs`;

SELECT country, count(*)
  FROM mongodb.web.users
  GROUP BY country;

SELECT timestamp
  FROM s3.root.`clicks.json`
  WHERE user_id = 'jdoe';

传统的查询引擎需要大量的IT交互才允许查询数据。Drill直接省去了这些冗余,可以快速原地查询这些原始数据。没有Schema创建和维护,也没有数据加载、转换和ETL操作。只需要在查询语句中指定数据的位置,如 Hadoop、S3或MongoDB。

Drill利用先进的查询编译和重编译,来优化查询性能,而不必对数据模式有预先了解。

化繁为简

将任何数据当表格形式一样使用

image

Drill设计了专有的JSON数据模型,能够支持复杂/嵌套数据的查询,对现代应用程序以及NoSQL中快速衍化的数据结构进行分析。不仅于此,还提供了SQL的扩展性,轻松查询更复杂的数据结构。

Drill是一款支持复杂数据的列式查询引擎。而且支持在内存中用列式表达复杂数据,所以查询JSON数据模型的速度可以媲美列式格式。

简单易用

继续使用你喜欢的BI工具

image

Drill支持标准的 ANSI SQL。商务用户,分析师,数据科学家可以通过Drill的JDBC或者ODBC驱动在标准的BI和分析工具上运行,例如:Tableau, Qlik, MicroStrategy, Spotfire, SAS 和 Excel,开发者也可以在他们的应用中使用 RESTful API(支持流式响应)来定制数据可视化。

Drill的虚拟数据集可以将复杂的NoSQL数据结构对应到兼容BI的结构,帮助用户挖掘和可视化数据。

水平扩展

从一台主机到一千台服务器

$ curl -L "<url>" | tar xzf -
$ cd apache-drill-<version>
$ bin/drill-embedded

Drill开箱即用的特点可以支持在Mac、Windows和Linux上快速完成安装(分钟级)。针对大规模的数据集,也可以部署到商用服务器上,充分利用高性能引擎。

Drill的对称性架构(所有节点职责相同)和易于安装的特点,方便部署及运行在大规模集群上。

快速响应

不再需要等待你的咖啡

image

Drill并不是世界上第一款查询引擎,却是第一个兼顾数据复杂性和查询速度的MPP引擎。Drill设计了与众不同的架构,不仅能够支持JSON数据模型,还做到了非凡的响应速度。

  • 列式执行引擎 (第一款支持复杂数据的列式执行引擎)
  • 支持运行时期的 Data-driven 编译和重编译
  • 专有的内存管理技术以减少内存占用和避免频繁垃圾回收
  • 通过将Drill和数据节点部署在一起来支持数据本地性(Data Locality)
  • 利用查询优化器的CBO和RBO技术将查询尽可能下推到数据库

部署使用Apache Dirll

官方教程:官方部署教程

通过docker compose 部署

version: "3"

services:
  apache-drill:
    image: apache/drill:1.21.2-openjdk-17
    container_name: apache-drill
    restart: always
    stdin_open: true       # 开启标准输入(相当于 -i)
    tty: true  # 分配伪终端(相当于 -t)
    volumes:
      - /data/drill/mnt/big/data:/mnt
      - /data/drill/data:/data
    ports:
      - "8047:8047"
      - "31010:31010"

jdbc连接地址:YourIp:31010

webUI的地址:YourIp:8047

通过webUI使用

image

启用mysql和mongo数据库的支持

mongo

image

编辑配置文件

image

{
  "type": "mongo",
  "connection": "mongodb://root:BICItech%40123@192.168.100.196:27017/data-plus",
  "pluginOptimizations": {
    "supportsProjectPushdown": true,
    "supportsFilterPushdown": true,
    "supportsAggregatePushdown": true,
    "supportsSortPushdown": true,
    "supportsUnionPushdown": true,
    "supportsLimitPushdown": true
  },
  "batchSize": 100,
  "authMode": "SHARED_USER"
}

mysql

新建

image​​image

基本查询

show databases;

image

执行结果

image

select * from mongo.`data-plus`.api_definition

image

查询结果

image

select * from mysql.`data-plus`.area

image

查询结果

image

特殊查询

show databases

image

查询结果

image

show tables

show tables​ 前必须先使用 use schema​指定schema

image

查询结果

image

特殊的schema-information_schema

查看表名

image

查询结果

image

cloumns 表

存储了所有schema对应的表的字段相关信息

查询

image

结果

image

深入了解

EXPLAIIN

官方文档地址: Explain

查询计划 Query Plans

官方文档地址: Query Plans

posted @ 2025-04-30 11:06  lcgyl  阅读(4)  评论(0)    收藏  举报