Apache drill

作者: 暗黑破坏球嘿哈 | 来源:发表于2016-06-22 22:53 被阅读3113次

    跟着官方文档看,外加查到的一些资料
    官方文档戳这里,中文版戳这里(安装方法完全可以按照tutorial,很详细,开启服务记住这一句就ok:bin/drill-embedded)

    FYI:本文和大部分介绍drill的文字一样无聊,,可能drill都是这么点东西,而且是同一版翻译

    Running in embedded mode

    安装完可以通过http://localhost:8047/ 访问,也可以:

    1. cd (path)/drill
    2. bin/sqlline -u jdbc:drill:zk=local
    3. Run a query (below).

    如果想修改配置,进入drill下conf文件夹,drill-env.sh中可以添加配置信息

    简介

    1. Apache Drill是一个低延迟的分布式海量数据(涵盖结构化、半结构化以及嵌套数据)交互式查询引擎。分布式、无模式(schema-free)
    2. 是Google Dremel的开源实现,本质是一个分布式的mpp(大规模并行处理)查询层,支持SQL及一些用于NoSQL和Hadoop数据存储系统上的语言
    3. 更快查询海量数据,通过对PB字节(2的50次方字节)数据的快速扫描完成相关分析
    4. Drill 提供即插即用,在现有的 Hive 和 HBase中可以随时整合部署。
    5. 是MR交互式查询能力不足的补充
    6. 数据模型,嵌套
    7. 列式存储
    8. 结合了web搜索和并行DBMS技术

    注:Hive (Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce那么麻烦。)
    有一套笔记讲Hive,戳这里

    Drill 核心服务是 Drillbit,

    Drillbit运行在集群的每个数据节点上时,可以最大化执行查询,不需要网络或是节点之间移动数据

    接口

    • Drill Shell
    • Drill Web Console
    • ODBC/JDBC
    • C++ API
    动态发现Schema

    处理过程中会发现schema,

    灵活的数据模型

    允许数据属性嵌套,从架构角度看,Drill提供了灵活的柱状数据模型

    无集中式元数据

    不依赖单个的Hive仓库,可以查询多个Hive仓库,将数据结果整合

    查询执行

    提交一个Drill查询,客户端或应用程序会按照查询格式发一个SQL语句到Drillbit,Drillbit是一个执行入口,运行计划并执行查询

    Drillbit街道查询请求后会变成Foreman来带动整个查询,先解析SQL,然后转变成Drill可以识别的SQL

    logical plan 描述生成查询结果所需要的工作,并定义数据源和操作,由逻辑运算符的集合构成。

    流程

    Major Fragments

    • a concept that represents a phase of the query execution
    • A phase can consist of one or multiple operations that Drill must perform to execute the query.
    • Drill assigns each major fragment a MajorFragmentID
    • Drill uses an exchange operator to separate major fragments. An exchange is a change in data location and/or parallelization of the physical plan. An exchange is composed of a sender and a receiver to allow data to move between nodes.

    Minor Fragments

    • Each major fragment is parallelized into minor fragments.
    • A minor fragment is a logical unit of work that runs inside a thread. A logical unit of work in Drill is also referred to as a slice.
    • The execution plan that Drill creates is composed of minor fragments. Drill assigns each minor fragment a MinorFragmentID.


      Paste_Image.png
      如果是嵌套数组,the third value of the second inner array).
      select group[1][2]
    • 一个复杂的SQL语句

    • 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;
      

      REST API

      get/post,文档在这里,有个jsonapi相关的文档,写的很好,而且也有代码,是我当时看的时候的参考资料

      待续。。

    相关文章

      网友评论

        本文标题:Apache drill

        本文链接:https://www.haomeiwen.com/subject/wjfndttx.html