Spark数据帧在连接到Phoenix查询服务器时仅返回结构

时间:2017-10-13 06:35:40

标签: apache-spark jdbc phoenix

我通过来自Spark 2.2.0的phoenix(4.11)queryserver连接到hbase(版本1.2),但是数据帧返回了唯一具有空行的表结构,表中存在数据。 这是我用来连接查询服务器的代码。

// ---jar ----phoenix-4.11.0-HBase-1.2-thin-client.jar<br>
val prop = new java.util.Properties
prop.setProperty("driver", "org.apache.phoenix.queryserver.client.Driver")
val url = "jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF"
val d1 = spark.sqlContext.read.jdbc(url,"TABLE1",prop) 
d1.show()

任何人都可以帮我解决这个问题。提前致谢

1 个答案:

答案 0 :(得分:0)

如果您使用的是spark2.2,更好的方法是直接通过pheonix作为数据帧加载。这样您只提供zookeeper url并且您可以提供谓词,以便您只加载所需的数据而不是整个数据。

import org.apache.phoenix.spark._
import org.apache.hadoop.conf.Configuration
import org.apache.spark.sql.SparkSession

val configuration = new Configuration()
configuration.set("hbase.zookeeper.quorum", "localhost:2181");
val spark = SparkSession.builder().master("local").enableHiveSupport().getOrCreate()
val df=spark.sqlContext.phoenixTableAsDataFrame("TABLE1",Seq("COL1","COL2"),predicate = Some("\"COL1\" = 1"),conf = configuration)

阅读this以获取有关将表格作为rdd并保存数据帧和rdd的更多信息。