本文使用Spark shel操作phoenix(参考官方文档http://phoenix.apache.org/phoenix_spark.html,解决了官方文档的一些问题)
通过phoenix提供的包来操作hbase比直接使用jdbc的方式更高效(因为比jdbc的方式更细粒度化的调度)
软件环境:
Phoenix4.8
HBase1.1.2
Spark1.5.2/1.6.3/2.x
1、在phoenix中建表
CREATE TABLE TABLE1 (ID BIGINT NOT NULL PRIMARY KEY, COL1 VARCHAR);
UPSERT INTO TABLE1 (ID, COL1) VALUES (1, 'test_row_1');
UPSERT INTO TABLE1 (ID, COL1) VALUES (2, 'test_row_2');
1、启动spark-shelll
spark-shell --jars /opt/phoenix4.8/phoenix-spark-4.8.0-HBase-1.1.jar,/opt/phoenix4.8/phoenix-4.8.0-HBase-1.1-client.jar
2、使用DataSource API,load为DataFrame
import org.apache.phoenix.spark._
val df = sqlContext.load("org.apache.phoenix.spark", Map("table" -> "TABLE1", "zkUrl" -> "192.38.0.231:2181"))
df.filter(df("COL1") === "test_row_1" && df("ID") === 1L).select(df("ID")).show
如果spark2.x版本,使用如下方式(前提是修改了phoenix-spark模块的代码,使之兼容spark2.x,重新编译):
import org.apache.phoeni