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