驱动包地址

链接:https://pan.baidu.com/s/1Nivkvze24hRH8pXOQleCgw
提取码:gp9z

使用dremio主要原因 :

1)springboot提供了es组件,前期先使用的boot提供的es模板查询数据,但是发现组装数据很麻烦。最致命的是在分组数据统计的时候,每个查询条件就需要循环一遍数据,网上找了很多资料都是循环遍历数据这样感觉效率太低。

2)由于ELK多半用于数据统计报表展现,并不支持数据导出(有可能支持反正没有找到好的方法),所以es里的数据通过dremio的导出

dremio 还支持支持数据csv或者json导出数据 。

api连接代码如下:

  public static void jdbcDremio(){
String JDBC_DRIVER = "com.dremio.jdbc.Driver";
String DB_URL = "jdbc:dremio:direct=172.16.220.135:31010";//浏览器访问端口号9047 ,但是api端口号是31010
String USER = "";
String PASS = ""; String sql =" SELECT goodsName,count(orderSn) as totalSaleNum " +
" FROM vem_order_info as order_info group by goodsName order by count(orderSn) desc "; try {
Class.forName(JDBC_DRIVER);
Connection cc = DriverManager.getConnection(DB_URL, USER, PASS);
PreparedStatement ps = cc.prepareStatement(sql);
ResultSet resultSet = ps.executeQuery();
while (resultSet.next()) {
System.out.println("------------------");
System.out.println(resultSet.getObject(1));
}
resultSet.close();
ps.close();
cc.close(); } catch (Exception e) {
e.printStackTrace();
} }

开始使用dremio的一些小坑:

  1. 如上api的调用的默认端口和浏览器默认端口是不一致的,主要错误信息并没有提示有关端口号相关内容,排查也是一个难啊!

    10:06:58.018 [Client-1] DEBUG cdjd.io.netty.util.Recycler - -Dio.netty.recycler.maxCapacity.default: 32768
    10:06:58.018 [Client-1] DEBUG cdjd.io.netty.util.Recycler - -Dio.netty.recycler.maxSharedCapacityFactor: 2
    10:06:58.018 [Client-1] DEBUG cdjd.io.netty.util.Recycler - -Dio.netty.recycler.linkCapacity: 16
    10:06:58.018 [Client-1] DEBUG cdjd.io.netty.util.Recycler - -Dio.netty.recycler.ratio: 8
    10:06:58.056 [Client-1] ERROR cdjd.com.dremio.exec.rpc.RpcExceptionHandler - Exception in RPC communication. Connection: null <--> null (user client). Closing connection.
    cdjd.io.netty.handler.codec.CorruptedFrameException: Expected to read a tag of 10 but actually received a value of 84. Happened after reading 0 message.
    at cdjd.com.dremio.exec.rpc.MessageDecoder.checkTag(MessageDecoder.java:209)
    at cdjd.com.dremio.exec.rpc.MessageDecoder.decodeMessage(MessageDecoder.java:130)
    at cdjd.com.dremio.exec.rpc.MessageDecoder.decode(MessageDecoder.java:103)
    at cdjd.com.dremio.sabot.rpc.user.UserProtobufLengthDecoder.decode(UserProtobufLengthDecoder.java:35)
    at cdjd.io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:491)
    at cdjd.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:430)
    at cdjd.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
    at cdjd.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
    at cdjd.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
    at cdjd.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
    at cdjd.io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
    at cdjd.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
    at cdjd.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
    at cdjd.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
    at cdjd.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
    at cdjd.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
    at cdjd.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
    at cdjd.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
    at cdjd.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
    at cdjd.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645)
    at cdjd.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
    at cdjd.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
    at cdjd.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
    at cdjd.io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
    at java.lang.Thread.run(Thread.java:748)
    10:06:58.073 [Client-1] INFO cdjd.com.dremio.sabot.rpc.user.UserClient - [USER]: Channel closed null <--> null (user client)
    10:06:58.074 [Client-1] DEBUG cdjd.com.dremio.exec.rpc.BasicClient - Failure while initiating handshake
    cdjd.com.dremio.exec.rpc.ChannelClosedException: [USER]: Channel closed null <--> null (user client)
    at cdjd.com.dremio.exec.rpc.RpcBus$ChannelClosedHandler.operationComplete(RpcBus.java:157)
  2. api前期使用了es组件之后那么导入springboot版本和使用的es组件版本冲突错误信息如下:
    2019-01-22 15:42:44.308  WARN 11600 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'elasticsearchClient' defined in class path resource [org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.elasticsearch.client.transport.TransportClient]: Factory method 'elasticsearchClient' threw exception; nested exception is java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: org/elasticsearch/common/transport/InetSocketTransportAddress
    2019-01-22 15:42:44.309 INFO 11600 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
    2019-01-22 15:42:44.314 INFO 11600 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] Process finished with exit code 1

    pom配置信息:

      <groupId>org.elasticsearch.client</groupId>
    <artifactId>x-pack-transport</artifactId>
    <version>6.5.4</version>
    </dependency>
    <dependency>
    <groupId>org.elasticsearch.plugin</groupId>
    <artifactId>core</artifactId>
    <version>6.5.4</version>
    </dependency>
    <dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>6.5.4</version>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency> <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency> <!-- <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>-->

    由于后面直接使用dremio -sql ,es-sql就用不到了,直接将spring-boot-starter-data-elasticsearch 删除就好了。

dremio jdbc使用的更多相关文章

  1. presto,dremio,spark-sql与ranger的整合记录

    dremio,spark-sql,presto和ranger的整合 当前,ranger没有现成的插件来管理dremio,spark-sql,presto. 暂时使用的方法是新建一个用户,如presto ...

  2. Java数据库连接技术——JDBC

    大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...

  3. 玩转spring boot——结合AngularJs和JDBC

    参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...

  4. [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...

  5. JDBC MySQL 多表关联查询查询

    public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...

  6. JDBC增加删除修改

    一.配置程序--让我们程序能找到数据库的驱动jar包 1.把.jar文件复制到项目中去,整合的时候方便. 2.在eclipse项目右击"构建路径"--"配置构建路径&qu ...

  7. JDBC简介

    jdbc连接数据库的四个对象 DriverManager  驱动类   DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 ...

  8. JDBC Tutorials: Commit or Rollback transaction in finally block

    http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...

  9. FineReport如何用JDBC连接阿里云ADS数据库

    在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我们只需要手动将连接ads数据库需要使用到的jar放置到%F ...

随机推荐

  1. Unity添加多个可视镜头Preview功能(一)

    打算写这样一个工具,可用于影片镜头调节,房产漫游的可视化,建立多个可视镜头,可以动态调整各个镜头的位置和旋转方向,同时,还能在类似于Camera 的Preview这样的小窗口中查看该镜头(在小窗口中点 ...

  2. logback kafkaAppender输出日志到kafka

    官网地址https://github.com/danielwegener/logback-kafka-appender 本文以spring boot项目为基础,更多的信息,请参考官网 https:// ...

  3. javaMail实现收发邮件(四)

    JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操作,在介绍这些类之前,我们先来了解下邮件接收API的体系结构,JavaMai API中定义了一个java.mail.Store类 ...

  4. docker学习-常用命令1

    一.容器管理 1.1 Docker start/stop/restart/rm 命令实例:启动|停止|重启|删除 容器mydb01# docker start|stop|restart|rm mydb ...

  5. java itext替换PDF中的文本

    itext没有提供直接替换PDF文本的接口,我们可以通过在原有的文本区域覆盖一个遮挡层,再在上面加上文本来实现. 所需jar包: 1.先在PDF需要替换的位置覆盖一个白色遮挡层(颜色可根据PDF文字背 ...

  6. 采用ftpServer构建嵌入式ftp服务器时设置pass功能

    讲ftpserver嵌入式ftp服务器的文章很多,但是都没有介绍pass功能设置的. apach上pass部分也是针对的ftpd服务器的xml配置,关于嵌入式ftp服务器设置pass功能的部分几乎没有 ...

  7. vue父子组件实现v-model

    话不多说,直接上代码 <div id="app"> <price-input v-bind:value="price" v-on:input= ...

  8. php使用redis的GEO地理信息类型

    redis3.2中增中了对GEO类型的支持,该类型存储经纬度,提供了经纬设置,查询,范围查询,距离查询,经纬度hash等操作. <?php $redis = new Redis(); $redi ...

  9. SVN chechout 错误: xxx is not valid as filename in directory

    转载:https://blog.csdn.net/ClementAD/article/details/47838989 意思就是Linux系统允许文件或文件夹的名字包含空格,而windows是不允许的 ...

  10. hbase-多租户

    namespace 不同表在不同的namespace,可以做用户的权限控制 资源限制 限制每时间段请求的数量和大小 设置表的空间大小 修改hbase-site.xml文件 添加两个配置 hbase.q ...