记一次大数据爬坑

前言

Vertx

Vertx是一个高效的异步框架,支持Java、Scala、JavaScript、Kotlin等多种语言。在非性能调优的场景下,TPS可以高达2-3万,同时,支持多种数据源也提供了异步支持。

Phoenix

大数据的同学肯定对其很了解,是Apache基金会下的顶级工程,Phoenix帮助Hbase提供了SQL语法的支持,使难用的Hbase变得简单易用。

Hbase

用于存储上百万的场景数据,

Mysql

用于存储Streaming处理和Batch之后数据量比较少,对SQL查询要求比较高的场景数据。

Redis

用于存储统计数据,比如:PV、UV等类型数据。

爬坑日记

Scala版本导致的冲突问题

由于Vertx提供的Jar只支持Scala:2.12版本,而本地环境使用的是Scala:2.11,出现下方错误信息之后,猜想是由于Scala版本问题导致,摆在我们面前的有两条路,一条是换Scala版本号,由于种种原因无法更换版本;另一个方案是选用Vertx提供的Java Jar,选择放弃使用Scala版本,使用Java版本的VertxJar来实现。

错误信息

com.github.mauricio.async.db.SSLConfiguration.  scala.Product.$init$(Lscala/Product;)V

Vertx包中Scala版本冲突

在尝试完成Scala包换为Java之后,问题依旧,分析错误信息,猜想可能是com.github.mauricio相关的包导致的问题,在通过GitHub和官网文档中找到了蛛丝马迹,该包是由Scala编写的,就迅速想到了版本号的问题,果不其然,选用的是2.12,马上将Maven文件进行修改,解决了这个问题。


            io.vertx
            vertx-redis-client
        
        
            io.vertx
            vertx-mysql-postgresql-client
            
                
                    mysql-async_2.12
                    com.github.mauricio
                
                
                    db-async-common_2.12
                    com.github.mauricio
                
            
        
        
            db-async-common_2.11
            com.github.mauricio
            0.2.21
        
        
            mysql-async_2.11
            com.github.mauricio
            0.2.21
        

Phoenix包问题

项目中需要通过使用JDBC的方式连接Phoenix,在Spark项目中使用了如下的依赖实现


    org.apache.phoenix
    phoenix-client
    ${phoenix.version}
    client

但是出现了如下错误

Caused by: java.lang.NoSuchMethodError: com.jayway.jsonpath.spi.mapper.JacksonMappingProvider.(jackson-databind)

猜测可能原因是包冲突,但发现Maven中不存在jsonpath该相应的依赖,故猜想可能是jackson包版本导致的冲突,故将parent中的依赖配置移到当前pom文件中,因为Maven是就近查找依赖的,但发现还是没有效果。由于phoenix-client是一个独立的包,无法对其exclusion操作,在同事的提示下,采用的解压该Jar包,找到了jayway相关目录,将该目录删除后进行重新打包,神奇的事发生了,启动成功了。

Phoenix Driver问题

程序启动成功,但在测试Vertx-JDBC连接Phoenix时,出现找不到Driver问题,原来phoenix-client中无法引用到org.apache.phoenix.jdbc.PhoenixDriver,在Google之后,使用了如下的Jar方案


    org.apache.phoenix
    phoenix-core
    ${phoenix.version}

问题就解决了。

jdbc:phoenix:host1,host2:2181:/hbase

你可能感兴趣的:(vertx,hbase)