2016-10-17 71 views
1

我正在嘗試使用Spark Scala API讀取HBase表。使用Spark閱讀HBase表中的where子句使用Spark

示例代碼:

conf.set("hbase.master", "localhost:60000") 
conf.set("hbase.zookeeper.quorum", "localhost") 
conf.set(TableInputFormat.INPUT_TABLE, tableName) 
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result]) 
println("Number of Records found : " + hBaseRDD.count()) 

如何添加where條款如果我使用newAPIHadoopRDD

或者我們需要使用任何Spark Hbase Connector來實現這個目標?

我看到下面的Spark Hbase連接器,但是我沒有看到where子句的任何示例代碼。

https://github.com/nerdammer/spark-hbase-connector

回答

1

您可以使用SHC連接器從HortonWorks實現這一目標。

https://github.com/hortonworks-spark/shc

這裏是星火2

val catalog = 
     s"""{ 
      |"table":{"namespace":"default", "name":"my_table"}, 
      |"rowkey":"id", 
      |"columns":{ 
      |"id":{"cf":"rowkey", "col":"id", "type":"string"}, 
      |"name":{"cf":"info", "col":"name", "type":"string"}, 
      |"age":{"cf":"info", "col":"age", "type":"string"} 
      |} 
      |}""".stripMargin 

    val spark = SparkSession 
     .builder() 
     .appName("hbase spark") 
     .getOrCreate() 

    val df = spark 
     .read 
     .options(
      Map(
       HBaseTableCatalog.tableCatalog -> catalog 
      ) 
     ) 
     .format("org.apache.spark.sql.execution.datasources.hbase") 
     .load() 

    df.show() 

然後,您可以使用任何方法對你的數據幀的代碼示例。例如:

df.where(df("age") === 20)