Phoenix中的Where子句与Spark集成

时间:2017-09-08 02:36:50

标签: java apache-spark phoenix

我正在尝试使用

从Phoenix读取一些数据到Spark
String connectionString="jdbc:phoenix:auper01-01-20-01-0.prod.vroc.com.au,auper01-02-10-01-0.prod.vroc.com.au,auper01-02-10-02-0.prod.vroc.com.au:2181:/hbase-unsecure";
Map<String, String> options2 = new HashMap<String, String>();
options2.put("driver", "org.apache.phoenix.jdbc.PhoenixDriver");
//options2.put("dbtable", url);
options2.put("table", "VROC_SENSORDATA_3");
options2.put("zkUrl", connectionString);

DataFrame phoenixFrame2 = this.hc.read().format("org.apache.phoenix.spark")
                    .options(options2)
                    .load();

System.out.println("The phoenix table is:");
phoenixFrame2.printSchema();
phoenixFrame2.show(20, false);

但是我需要用where子句做一个select,我也使用了在Spark中用于JDBC连接的dbtable,但我想它没有任何效果!

基于documentation

  

“相比之下,凤凰火花集成能够利用Phoenix提供的底层分割,以便在多个工作者之间检索和保存数据。所需要的只是数据库URL和表名。可选的SELECT列可以是给出,以及有效过滤的下推谓词。“

但似乎无法并行化凤凰的读取,在Spark Dataframe中读取整个表然后进行过滤会非常低效,但似乎我可以找到一种方法来应用where子句。有谁知道如何在我的上述代码中应用where子句?

0 个答案:

没有答案