title: HBASE SPARK Query with filter without load all the hbase
body: <p>I have to query HBASE and then work with the data with spark and scala. 
  My problem is that with my solution, i take ALL the data of my HBASE table and then i filter, it's not an efficient way because it takes too much memory. So i would like to do the filter directly, how can i do that ? </p>
  
  <pre><code>def HbaseSparkQuery(table: String, gatewayINPUT: String, sparkContext: SparkContext): DataFrame = {
  
      val sqlContext = new SQLContext(sparkContext)
  
      import sqlContext.implicits._
  
      val conf = HBaseConfiguration.create()
  
      val tableName = table
  
      conf.set("hbase.zookeeper.quorum", "localhost")
      conf.set("hbase.master", "localhost:60000")
      conf.set(TableInputFormat.INPUT_TABLE, tableName)
  
      val hBaseRDD = sparkContext.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result])
  
  
      val DATAFRAME = hBaseRDD.map(x =&gt; {
        (Bytes.toString(x._2.getValue(Bytes.toBytes("header"), Bytes.toBytes("gatewayIMEA"))),
          Bytes.toString(x._2.getValue(Bytes.toBytes("header"), Bytes.toBytes("eventTime"))),
          Bytes.toString(x._2.getValue(Bytes.toBytes("node"), Bytes.toBytes("imei"))),
          Bytes.toString(x._2.getValue(Bytes.toBytes("measure"), Bytes.toBytes("rssi"))))
  
      }).toDF()
        .withColumnRenamed("_1", "GatewayIMEA")
        .withColumnRenamed("_2", "EventTime")
        .withColumnRenamed("_3", "ap")
        .withColumnRenamed("_4", "RSSI")
        .filter($"GatewayIMEA" === gatewayINPUT)
  
      DATAFRAME
    }
  </code></pre>
  
  <p>As you can see in my code, I do the filter after the creation of the dataframe, after the loading of Hbase data .. </p>
  
  <p>Thank you in advance for your answers </p>