2017-01-09 71 views
0

我無法播放從我的Hbase表中收到的數據。我有一個HBase的表EMP_META: COLUMN_NAME,SALARY,DESIGNATION,BONUS,我就用下面的代碼閱讀:Spark:打印Hbase數據並將其轉換爲Dataframe

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()) 
} 

然而,當我打印使用上述print語句它,我得到以下的輸出:

(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}) 

而不是簡單的數據文本行。我想將輸出轉換爲數據框,以便我可以輕鬆地播放數據。有人能幫助我嗎? 感謝

回答

1

如果你想hbaseRDD轉換成數據幀,可以使用如下代碼:

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

如果你想將結果轉換爲字符串,應數組(字節)轉換爲字符串。存儲在HBase中的數據是Array [Byte]。嘗試使用Bytes.toString(data)將其轉換。

+0

感謝您的評論,我正在做一些無意義的事情,我還有一個問題。我如何獲得輸出中所有列的列表?使用getRow()方法,我可以得到關鍵字列,'value'得到第二列,但是我無法獲得其餘列。 – Explorer

+0

該值應該是hbase中的行,你可以得到每一列。可能是你的代碼已經設置了列,否則,你可以得到所有的列。 – Fang

相關問題