2017-01-09 14 views
0

Hbaseテーブルから受信したデータを再生するのが難しいです。私は、HBaseのテーブルEMP_META: COLUMN_NAME,SALARY,DESIGNATION,BONUSを持っていると私は、コードの下に使用してそれを読む:私は上記のprint文を使用して印刷するときしかし、私は、出力の下に取得スパーク: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 

:あなたはデータフレームにhbaseRDDを変換したい場合は おかげ

答えて

1

は、あなたがフォローコードを使用することができます。 HBaseに格納されているデータはArray [Byte]です。Bytes.toString(data)を使用して変換します。

+0

あなたのコメントをありがとう、私はいくつか無意味なことをしていた、私はもう一つ質問があります。出力のすべての列のリストを取得するにはどうすればよいですか?メソッド 'getRow()'ではキー列を取得できますが、 'value'は2番目の列を返しますが、残りの列を取得することはできません。 – Explorer

+0

値は、hbaseの行にする必要があります、あなたは各列を取得することができます。コードは、列を設定しているかもしれない、そうでなければ、すべての列を得ることができます。 – Fang

関連する問題