Data&Processing

Spark 에서 Hbase 데이터 읽어오기

별이별이 2014. 4. 25. 18:25

Spark 에서 HBase 데이터를 읽기는 github에 Sample이 나와있기는 하지만 Connect 하는 부분만 나오고 값을 읽는 부분이 나오지 않아서 여기저기 찾다가 올려봄


아래 Source




import org.apache.spark._

import org.apache.spark.rdd.NewHadoopRDD

import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor}

import org.apache.hadoop.hbase.client.HBaseAdmin

import org.apache.hadoop.hbase.mapreduce.TableInputFormat

import org.apache.hadoop.hbase.client.Append

import org.apache.hadoop.hbase.client.Append



object hbase_test {

  def main(args: Array[String]) {

val conf0 = new SparkConf()

  .setMaster("local")

  .setAppName("My App")

  .set("spark.executor.memory","1g")

  .setSparkHome("/home/cloudera/Downloads/spark-0.9.0-incubating")


val sc = new SparkContext(conf0)


val conf = HBaseConfiguration.create() // Hbase연결


val TableName = "GOODS" //테이블명

conf.set(TableInputFormat.INPUT_TABLE, TableName)


// Initialize hBase table if necessary

val admin = new HBaseAdmin(conf)


val hBaseRDD_Goods = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],

      classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],

      classOf[org.apache.hadoop.hbase.client.Result])


val tvalue = hBaseRDD_GOODS.first()

val vvalue = tvalue._2.getValue("Attr".getBytes(), "GOODS_NAME".getBytes())

/*

tvalue는 tuple이며

첫번째는 Key - Key값을 얻으려면 tvalue._1.get()

두번째에는 값이 들어가 있음

그래서 _2.getValue("ColumnFamily Name".getBytes(), "Column Name".getBytes() ) 하게되면 array[byte] 형태의 데이터를 받음

*/