写一个简单的spark读取phoenix的工具类代码,导入phoenix-spark的依赖之后,maven依赖一直报红,尝试各种解决办法,包括删除仓库中.lastupdated文件后reimport,使用compile命令下载依赖,使用invalidate cache and restart重启idea等等,均未得到解决。而且在maven仓库里可以找到这个jar包,但是这个jar包的依赖包全线爆红,怀疑是maven对这个jar包的安装有问题。

pom文件如下

<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-spark</artifactId>
<version>5.0.0-HBase-2.0</version>
</dependency>

代码如下

object  PhoenixUtil {

def main(args: Array[String]): Unit = {
val list: List[ JSONObject] = queryList("select * from CUSTOMER")
println(list)
}

def queryList(sql:String):List[JSONObject]={
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver")
val resultList: ListBuffer[JSONObject] = new ListBuffer[ JSONObject]()
val conn: Connection = DriverManager.getConnection("jdbc:phoenix:hadoop1,hadoop2,hadoop3:2181")
val stat: Statement = conn.createStatement
println(sql)
val rs: ResultSet = stat.executeQuery(sql )
val md: ResultSetMetaData = rs.getMetaData
while ( rs.next ) {
val rowData = new JSONObject();
for (i <-1 to md.getColumnCount ) {
rowData.put(md.getColumnName(i), rs.getObject(i))
}
resultList+=rowData
}

stat.close()
conn.close()
resultList.toList
}

}

解决过程:

  1. 删掉org/apache/phoenix/phoenix-spark/5.0.0-HBase-2.0路径下的全部文件。
  2. 去maven官网下载该jar包。
  3. 执行mvn install命令。
    mvn install:install-file -Dfile=“jar包路径” -DgroupId=org.apache.phoenix -DartifactId=phoenix-spark -Dversion=5.0.0-HBase-2.0 -Dpackaging=jar
    执行该命令的前提是有配置maven的环境变量,并且配置的环境变量的maven和idea工程中使用的maven是同一个。
  4. 问题解决,不再报红