为什么使用 Drill

使用 Drill 的 10 大原因。

1.上手快,使用方便

只需要几分钟就能使用 Drill。解压 Drill 软件在你的 Linux,Mac 或 Windows 笔记本电脑上运行本地的文件查询。无需设置任何基础设施或是定义 schemas。只需要指向数据,例如:数据在文件,目录,HBase 表和 Drill(PS:在 Drill 存在一个名为 employee.json 数据表)中。

$ tar -xvf apache-drill-<version>.tar.gz
$ <install directory>/bin/drill-embedded
0: jdbc:drill:zk=local> SELECT * FROM cp.`employee.json` LIMIT 5;
+--------------+----------------------------+---------------------+---------------+--------------+----------------------------+-----------+----------------+-------------+------------------------+----------+----------------+----------------------+-----------------+---------+-----------------------+
| employee_id  |         full_name          |     first_name      |   last_name   | position_id  |       position_title       | store_id  | department_id  | birth_date  |       hire_date        |  salary  | supervisor_id  |   education_level    | marital_status  | gender  |    management_role    |
+--------------+----------------------------+---------------------+---------------+--------------+----------------------------+-----------+----------------+-------------+------------------------+----------+----------------+----------------------+-----------------+---------+-----------------------+
| 1            | Sheri Nowmer               | Sheri               | Nowmer        | 1            | President                  | 0         | 1              | 1961-08-26  | 1994-12-01 00:00:00.0  | 80000.0  | 0              | Graduate Degree      | S               | F       | Senior Management     |
| 2            | Derrick Whelply            | Derrick             | Whelply       | 2            | VP Country Manager         | 0         | 1              | 1915-07-03  | 1994-12-01 00:00:00.0  | 40000.0  | 1              | Graduate Degree      | M               | M       | Senior Management     |
| 4            | Michael Spence             | Michael             | Spence        | 2            | VP Country Manager         | 0         | 1              | 1969-06-20  | 1998-01-01 00:00:00.0  | 40000.0  | 1              | Graduate Degree      | S               | M       | Senior Management     |
| 5            | Maya Gutierrez             | Maya                | Gutierrez     | 2            | VP Country Manager         | 0         | 1              | 1951-05-10  | 1998-01-01 00:00:00.0  | 35000.0  | 1              | Bachelors Degree     | M               | F       | Senior Management     |

2.无模式的 JSON 模型

Drill 是目前第一个也是唯一的分布式 SQL 引擎,她不需要 schemas。她和 MongoDB,ElasticSearch 一样,是无模式的的 JSON 模型。无需定义和维护数据的转换(ETL)。Drill 能够自动解析数据的结构。

3.查询复杂,半结构化数据

使用 Drill 无模式的 JSON 模型,你可以查询复杂的半结构化数据。不需要在查询执行期间或在查询执行期间将数据进行平坦化或转换。Drill 还提供了直观的扩展 SQL 用于嵌套数据。这里是一个简单的查询一个 JSON 文件,来演示如何访问嵌套元素和数组:

SELECT * FROM (SELECT t.trans_id,
                      t.trans_info.prod_id[0] AS prod_id,
                      t.trans_info.purch_flag AS purchased
               FROM `clicks/clicks.json` t) sq
WHERE sq.prod_id BETWEEN 700 AND 750 AND
      sq.purchased = 'true'
ORDER BY sq.prod_id;

4.不一样的 SQL

Drill 支持标准的 SQL 语法:2003。不需要学习一个新的 "SQL" 语言或痛苦的去使用半功能化的 BI 工具。Drill 支持多种数据类型其中包括 DATE, INTERVAL, TIMESTAMP, 和 VARCHAR 以及复杂的查询,例如子查询和 JOIN 在 WHERE 语句中。下面是一个 TPC-H 标准查询运行于 Drill 中:

TPC-H query 4

SELECT  o.o_orderpriority, COUNT(*) AS order_count
FROM orders o
WHERE o.o_orderdate >= DATE '1996-10-01'
      AND o.o_orderdate < DATE '1996-10-01' + INTERVAL '3' month
      AND EXISTS(
                 SELECT * FROM lineitem l
                 WHERE l.l_orderkey = o.o_orderkey
                 AND l.l_commitdate < l.l_receiptdate
                 )
      GROUP BY o.o_orderpriority
      ORDER BY o.o_orderpriority;

5.支持标准的 BI 工具

Drill 能够工作在标准的 BI 工具中。你可以使用你现有的工具,例如 Tableau, MicroStrategy, QlikView 和 Excel。

6.与 Hive 表做交互式查询

Apache Drill 可以在你的 Hive 当中发挥更大的优势。你可以运行查询语句在 Drill 中访问你的 Hive 表和访问所有的 Hive 输入/输出格式(包含自定义的 SerDes)。你可以和不同的 Hive metastores 中表组合查询,也可以用 Hive 表和 HBase 表或目录的日志文件进行组合。下面是一个在 Drill 中,简单的 Hive 表查询:

SELECT `month`, state, sum(order_total) AS sales
FROM hive.orders
GROUP BY `month`, state
ORDER BY 3 DESC LIMIT 5;

7.访问多个数据源

Drill 可扩展,你可以连接多个文件系统(本地或分布式文件系统,例如 S3 和 HDFS),HBase 和 Hive。你也可以实现一个存储插件,以使 Drill 能够工作在其他的数据源上。另外,从单一的查询,非集中的元数据定义中,Drill 可以将数据从多个数据源中组合起来。下面是一个查询,将数据合并从一个 Hive 表,一个 HBase 表和一个 JSON 文件:

SELECT custview.membership, sum(orders.order_total) AS sales
FROM hive.orders, custview, dfs.`clicks/clicks.json` c
WHERE orders.cust_id = custview.cust_id AND orders.cust_id = c.user_info.cust_id
GROUP BY custview.membership
ORDER BY 2;

8.用户自定义函数(UDFS)

Drill 对外提供了一个简单的,高性能的 JAVA API 来构建一个 UDFS 到你的业务逻辑中,Drill 也是支持 Hive 的 UDFS 的。如果你在 Hive 中已经构建了 UDFS,你可以直接重用它们,无需在修改。

9.高性能

Drill 设计初衷是高吞吐和低延时。她不使用通用的执行引擎,像 MapReduce,Tez 或 Spark。因而,Drill非常灵活(无模式的 JSON 模型)并且性能非常高。Drill 的优化利用模块化和低成本为技术基础,以及数据本地化和操作下推这种能力,能够将查询片段推到后端数据源。Drill 还提供了一个柱状矢量执行引擎,导致更高的内存和 CPU 效率。

10.单台笔记本电脑到 1000 个节点的集群

你可以简单的在一台笔记本电脑上运行 Drill。当你准备去分析大的数据集时,你需要将 Drill 部署到你的 Hadoop 集群(1000 个节点)。Drill 利用集群中的总内存来执行查询,使用一个可观的 pipelined 模型,在内存不足时,会自动 spills 到磁盘上。

Copyright © smartloli 2016 all right reserved,powered by GitbookModify: 2016-08-26 06:59:28