2017-01-09 38 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

相关问题