본문 바로가기

Data&Processing

Spark 에서 Hbase 데이터 읽어오기

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] 형태의 데이터를 받음

*/