Phoenix是使用Java编写的一个开源项目,基于在HBase之上的一个SQL层,能让我们通过标准的JDBC API读写HBase,而不用Scan或者get的方式,其实底层是将SQL编译成原生的HBase scans进行查询。
本文将通过Spark的方式来读写Phoenix,基于以下版本开发测试。
scala-version:2.11.8
spark-version:2.2.0
hbase-version:1.3.1
phoenix-version:4.14.0
接下来正式开始了。
1. 添加Maven依赖
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-spark</artifactId>
<version>4.14.0-HBase-1.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
2. Spark 操作 Phoenix
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
object Phoenix2Spark {
def main(args: Array[String]): Unit = {
val jdbcPhoenixUrl = "jdbc:phoenix:172.18.18.100:2181"
val tableName = "test"
val conf = new SparkConf().setAppName("phoenix-spark").setMaster("local")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val df = sqlContext.load("org.apache.phoenix.spark", Map("table"->tableName, "zkUrl"->jdbcPhoenixUrl))
df.show()
sc.stop()
}
}