2017-01-09 3 views
0

Hbase 테이블에서받은 데이터로 재생하는 데 어려움이 있습니다. 나는 HBase를 테이블 EMP_META: COLUMN_NAME,SALARY,DESIGNATION,BONUS을 가지고 있고 나는 코드 아래 사용하여 읽을 : 나는 위의 인쇄 문을 사용하여 인쇄 할 때 스파크 : Hbase 데이터를 인쇄하여 데이터 프레임으로 변환

def main(args: Array[String]): Unit = { 
val sc = new SparkContext("local", "hbase-test") 
println("Running Phoenix Context") 
val conf = HBaseConfiguration.create() 
conf.set(TableInputFormat.INPUT_TABLE, "EMP_META") 
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result]) 
println("--------------: "+hBaseRDD.first()) 
} 

그러나 나는 출력 아래 얻을 :

(65 6d 70 6c 6f 79 65 65,keyvalues={employee/0:COLUMN_NAME/1483975443911/Put/vlen=4/seqid=0, employee/0:DATA_TYPE/1483975443911/Put/vlen=7/seqid=0, employee/0:_0/1483975443911/Put/vlen=1/seqid=0}) 

대신 간단한 데이터 텍스트 행을. 데이터를 쉽게 재생할 수 있도록 출력을 데이터 프레임으로 변환하고 싶습니다. 누군가 나를 도와주세요. 당신이 결과를 String로 변환 할 경우 문자열로 배열 [바이트]를 변환해야합니다,

val sqlContext = new org.apache.spark.sql.SQLContext(sc) 
    import sqlContext.implicits._ 
    hBaseRDD.toDF 

: 당신이 DataFrame에 hbaseRDD을 변환 할 경우 감사

답변

1

, 당신은 다음과 코드를 사용할 수 있습니다. HBase에 저장된 데이터는 Array [Byte]입니다. Bytes.toString (data)을 사용하여 변환하십시오.

+0

의견을 보내 주셔서 감사합니다. 나는 무의미한 것을하고 있었고, 한 가지 더 질문이 있습니다. 출력에있는 모든 열의 목록을 가져 오는 방법은 무엇입니까? getRow() 메소드를 사용하면 키 열을 가져올 수 있고 'value'는 두 번째 열을 제공하지만 나머지 열을 가져올 수는 없습니다. – Explorer

+0

값은 hbase의 행이어야합니다, 당신은 각 열을 얻을 수 있습니다. 당신은 코드가 열을, 그렇지 않으면, 당신이 얻을 수있는 모든 열을 설정할 수 있습니다. – Fang

관련 문제