記一次大數據爬坑

前言

Vertx

Vertx是一個高效的異步框架,支持Java、Scala、JavaScript、Kotlin等多種語言。在非性能調優的場景下,TPS能夠高達2-3萬,同時,支持多種數據源也提供了異步支持。java

Phoenix

大數據的同窗確定對其很瞭解,是Apache基金會下的頂級工程,Phoenix幫助Hbase提供了SQL語法的支持,使難用的Hbase變得簡單易用。mysql

Hbase

用於存儲上百萬的場景數據,git

Mysql

用於存儲Streaming處理和Batch以後數據量比較少,對SQL查詢要求比較高的場景數據。github

Redis

用於存儲統計數據,好比:PV、UV等類型數據。redis

爬坑日記

Scala版本致使的衝突問題

因爲Vertx提供的Jar只支持Scala:2.12版本,而本地環境使用的是Scala:2.11,出現下方錯誤信息以後,猜測是因爲Scala版本問題致使,擺在咱們面前的有兩條路,一條是換Scala版本號,因爲種種緣由沒法更換版本;另外一個方案是選用Vertx提供的Java Jar,選擇放棄使用Scala版本,使用Java版本的VertxJar來實現。sql

錯誤信息apache

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文件進行修改,解決了這個問題。json

<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項目中使用了以下的依賴實現app

<dependency>
    <groupId>org.apache.phoenix</groupId>
    <artifactId>phoenix-client</artifactId>
    <version>${phoenix.version}</version>
    <classifier>client</classifier>
</dependency>

可是出現了以下錯誤框架

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方案

<dependency>
    <groupId>org.apache.phoenix</groupId>
    <artifactId>phoenix-core</artifactId>
    <version>${phoenix.version}</version>
</dependency>

問題就解決了。

jdbc:phoenix:host1,host2:2181:/hbase
相關文章
相關標籤/搜索