2014-12-16 1 views
1

나는 스파크와 hbase를 사용하여 Rdd를 얻고있다. 이제 그 rdd를 필터링하고 그 Rdd에서 특정 값을 얻고 싶습니다. 어떻게 진행할 수 있습니까? 여기Spark Hbase Rdd를 필터링하고 결과를 얻는 방법은 무엇입니까?

내가 지금

val sc = new SparkContext(sparkConf) 
val conf = HBaseConfiguration.create() 
conf.set(TableInputFormat.INPUT_TABLE, "tbl_date") 
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], 
classOf[ImmutableBytesWritable], 
classOf[Result]) 

지금 내가 RDD (hBaseRDD)과는 RDD에 특정 매개 변수를 전송하여 특정 열 데이터를 얻을 사용하고자까지 한 일이다. 내가 어떻게 이걸 얻을 수 있니?

답변

0

당신이 이미 가지고있는 무엇 : 대한

val localData = hbaseRDD.collect() // This is array of Result 
val filteredData = localData.map{ result => 
       result.getColumnCells("MyColFamily", "MyColName").get(0) // assuming you want first cell: otherwise 
                 // you could also take all of them.. 
      }.filter{ cell => new String(cell.getValueArray()).startswtih("SomePrefix") } 

위의 쇼 자리/더미 기능 :

val sc = new SparkContext(sparkConf) 
val conf = HBaseConfiguration.create() 
conf.set(TableInputFormat.INPUT_TABLE, "tbl_date") 
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], 
classOf[ImmutableBytesWritable], 
classOf[Result]) 

는 다음을 추가

  • GET (0) 당신은 결정해야 첫 번째 셀 또는 모든 셀만 원할 경우
  • new String (cell.getValue 배열()) 당신은 .. 적절한 데이터 형식으로
  • .startsWith를 (변환해야합니다) 당신은 데이터

그러나 어떤 경우에도 위의 당신의 흐름 및 개요를 제공 수행 할 작업을 결정해야합니다 hbase 셀 데이터를 처리하는 방법.

관련 문제