Vertx
是一個高效的異步框架,支持Java、Scala、JavaScript、Kotlin
等多種語言。在非性能調優的場景下,TPS
能夠高達2-3萬,同時,支持多種數據源也提供了異步支持。java
大數據的同窗確定對其很瞭解,是Apache
基金會下的頂級工程,Phoenix
幫助Hbase
提供了SQL
語法的支持,使難用的Hbase
變得簡單易用。mysql
用於存儲上百萬的場景數據,git
用於存儲Streaming
處理和Batch
以後數據量比較少,對SQL
查詢要求比較高的場景數據。github
用於存儲統計數據,好比:PV、UV
等類型數據。redis
Scala
版本致使的衝突問題因爲Vertx
提供的Jar
只支持Scala:2.12
版本,而本地環境使用的是Scala:2.11
,出現下方錯誤信息以後,猜測是因爲Scala
版本問題致使,擺在咱們面前的有兩條路,一條是換Scala
版本號,因爲種種緣由沒法更換版本;另外一個方案是選用Vertx提供的Java Jar
,選擇放棄使用Scala
版本,使用Java
版本的Vertx
的Jar
來實現。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
相關目錄,將該目錄刪除後進行從新打包,神奇的事發生了,啓動成功了。
程序啓動成功,但在測試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