前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次大数据爬坑

记一次大数据爬坑

作者头像
迹_Jason
发布2019-05-28 12:30:55
6730
发布2019-05-28 12:30:55
举报
文章被收录于专栏:迹_Jason的AppZone迹_Jason的AppZone

前言

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来实现。

错误信息

代码语言:javascript
复制
com.github.mauricio.async.db.SSLConfiguration.<init>  scala.Product.$init$(Lscala/Product;)V

Vertx包中Scala版本冲突

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

代码语言:javascript
复制
<dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-redis-client</artifactId>
        </dependency>
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-mysql-postgresql-client</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>mysql-async_2.12</artifactId>
                    <groupId>com.github.mauricio</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>db-async-common_2.12</artifactId>
                    <groupId>com.github.mauricio</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <artifactId>db-async-common_2.11</artifactId>
            <groupId>com.github.mauricio</groupId>
            <version>0.2.21</version>
        </dependency>
        <dependency>
            <artifactId>mysql-async_2.11</artifactId>
            <groupId>com.github.mauricio</groupId>
            <version>0.2.21</version>
        </dependency>

Phoenix包问题

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

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.phoenix</groupId>
    <artifactId>phoenix-client</artifactId>
    <version>${phoenix.version}</version>
    <classifier>client</classifier>
</dependency>

但是出现了如下错误

代码语言:javascript
复制
Caused by: java.lang.NoSuchMethodError: com.jayway.jsonpath.spi.mapper.JacksonMappingProvider.<init>(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方案

代码语言:javascript
复制
<dependency>
	<groupId>org.apache.phoenix</groupId>
	<artifactId>phoenix-core</artifactId>
	<version>${phoenix.version}</version>
</dependency>

问题就解决了。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • Vertx
      • Phoenix
        • Hbase
          • Mysql
            • Redis
            • 爬坑日记
              • Scala版本导致的冲突问题
                • Vertx包中Scala版本冲突
                  • Phoenix包问题
                    • Phoenix Driver问题
                    相关产品与服务
                    云数据库 Redis
                    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档