您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

ava开发者必知必会的工具之Apache Dril

时间:2020-05-19 09:49:08  来源:  作者:

导读:前段时间公司业务需要,需要对现有用户数据进行简单的商业分析,因此找到了Apache Drill。本文将对Apache Drill进行简单的说明,希望能够帮助读者理解并使用到实际项目中。

使用场景

Aache Drill 是一个用来分析大数据的工具,使用标准SQL查询语句(即select语句)来完成数据查询的JAVA框架,主要用于:

  • 跨数据库查询:比如MySQL不同库联查
  • 跨数据源查询:比如mysql与oracle数据库联查、mysql与mongodb数据库联查,当然还支持更多的数据源。

如果你有以上的使用场景,那么它将会给你带来强大的震撼。

介绍

Apache Drill 是一个分布式查询引擎,实际上是GoolDremal的开源实现。

特点:

  • 低延迟
  • 支持SQL
  • 学习成本低
  • 支持jdbc
  • 高性能

基于以上特点,我在使用过程中,发现非常简单,很容易和现在的框架集成(springboot+mybatis),几乎零成本,唯一的成本就是配置数据源,这块成本也很小,因为Apache Drill提供了web ui操作。

基本用法

在这里我就不讲具体安装步骤了,我用Docker来代替。

  1. 通过apache/drill官方镜像安装并启动
  2. 浏览器打开localhost:8047(web ui 默认端口,别忘记修改容器port)
  3. 配置数据源
Java开发者必知必会的工具之Apache Drill

web ui 首页

  • 点击Storage,可以看到下图
Java开发者必知必会的工具之Apache Drill

drill 自带的web ui

  • 通过create创建数据源
Java开发者必知必会的工具之Apache Drill

配置

配置代码如下(这里是以mysql为例,mac系统)

{
  "type": "jdbc",
  "driver": "com.mysql.cj.jdbc.Driver",
  "url": "jdbc:mysql://docker.for.mac.host.internal:3306?serverTimezone=Asia/Shanghai",
  "username": "root",
  "password": "java",
  "caseInsensitiveTableNames": false,
  "enabled": true
}
  1. 测试

 

Java开发者必知必会的工具之Apache Drill

 

使用需要注意一点:

SQL查询语句比我们直接使用mysql等数据库SQL,多了一个命名空间,也就是我们在创建数据圆的时候的名字,下面SQL中的mysql

SELECT * from mysql.gadmins.sys_admin_function

5. jdbc client

pom.xml 添加依赖

      <dependency>
    <groupId>org.apache.drill.exec</groupId>
    <artifactId>drill-jdbc-all</artifactId>
    <version>1.17.0</version>
</dependency>

java代码

Class.forName("org.apache.drill.jdbc.Driver");
Connection connection =DriverManager.getConnection("jdbc:drill:zk=
node3.mynode.com:2181/drill/my_cluster_com-drillbits");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("SELECT * from mysql.gadmins.`sys_admin_function`");
while(rs.next()){
System.out.println(rs.getString(1));
}

拓展使用

由于我主要用来做数据查询,最关键的就是SQL语句了,那么有2个拓展场景

  • 通过自建web 管理SQL语句,执行测试、发布
  • 通过结合DataQL引擎,可以让SQL语句数据动起来,进一步对SQL查询出来的数据进行转化

总结

在调研的过程中,Apache Drill 给我的感觉就很来电,很有眼缘,当然也很符合我们的业务需要。在技术方案选型的过程中,是一个循序渐进的过程,未来还需要更多的调研,或许到一定阶段,就需要其他框架来支撑业务,这也是程序员的最大乐趣之一。



Tags:Apache Dril   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
导读:前段时间公司业务需要,需要对现有用户数据进行简单的商业分析,因此找到了Apache Drill。本文将对Apache Drill进行简单的说明,希望能够帮助读者理解并使用到实际项目中。使...【详细内容】
2020-05-19  Tags: Apache Dril  点击:(79)  评论:(0)  加入收藏
导读:前段时间公司业务需要,需要对现有用户数据进行简单的商业分析,因此找到了Apache Drill。本文将对Apache Drill进行简单的说明,希望能够帮助读者理解并使用到实际项目中。使...【详细内容】
2020-05-19  Tags: Apache Dril  点击:(29)  评论:(0)  加入收藏
▌简易百科推荐
面向对象的特征之一封装 面向对象的特征之二继承 方法重写(override/overWrite) 方法的重载(overload)和重写(override)的区别: 面向对象特征之三:多态 Instanceof关键字...【详细内容】
2021-12-28  顶顶架构师    Tags:面向对象   点击:(2)  评论:(0)  加入收藏
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  CF07    Tags:Java   点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Java架构师之路    Tags:JAVA   点击:(5)  评论:(0)  加入收藏
大家好!我是老码农,一个喜欢技术、爱分享的同学,从今天开始和大家持续分享JVM调优方面的经验。JVM调优是个大话题,涉及的知识点很庞大 Java内存模型 垃圾回收机制 各种工具使用 ...【详细内容】
2021-12-23  小码匠和老码农    Tags:JVM调优   点击:(11)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  dingle    Tags:JDBC   点击:(13)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  JAVA小白    Tags:Java   点击:(11)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  小西学JAVA    Tags:JAVA并发   点击:(11)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  唯一浩哥    Tags:Java基础   点击:(17)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  软件老王    Tags:logback   点击:(19)  评论:(0)  加入收藏
本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。我们先从一个例子开始吧。假设现在我们...【详细内容】
2021-12-14  小西学JAVA    Tags:JAVA   点击:(21)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条