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)进行转换。
我在处理从我的 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)进行转换。