Spark:打印Hbase数据并将其转换为Dataframe

Spark: printing Hbase data and converting it into Dataframe

我在处理从我的 Hbase table 接收到的数据时遇到困难。我有一个 Hbase table EMP_META: COLUMN_NAME,SALARY,DESIGNATION,BONUS,我使用下面的代码读取它:

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

而不是简单的数据文本行。我想将输出转换为数据帧,以便我可以轻松地处理数据。有人可以帮我解决这个问题吗? 谢谢

如果想将hbaseRDD转为DataFrame,可以使用如下代码:

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

如果要将结果转成String,应该把Array[Byte]转成String.The HBase中存储的数据是Array[Byte]。尝试使用Bytes.toString(data)进行转换。