0
我使用Phoenix在Hbase中創建下表。如何從hbase列讀取日期,時間和時間戳
CREATE TABLE test_Table
(test_date date not null,
CONSTRAINT PK_test PRIMARY KEY (test_date)
);
然後使用以下命令將一條記錄插入到相同的記錄中。
upsert into test_Table(test_date) values('2013-11-30');
我能夠從Hbase使用讀取字符串,整型,浮點數和雙數據類型值。 Hbase客戶端API,但不是日期類型。
我正在使用以下代碼來閱讀所有,但不知道如何從字節中讀取日期。
import org.apache.spark._
import org.apache.spark.rdd._
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.DataFrame
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.Path
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.spark.HBaseContext
import org.apache.hadoop.hbase.client.Scan
import org.apache.hadoop.hbase.util.Bytes
import org.apache.spark.sql.types._
import org.apache.hadoop.hbase.filter.PrefixFilter
import org.apache.hadoop.hbase.{ TableName, HBaseConfiguration }
import java.io.File
import java.text.SimpleDateFormat
def scanHBaseTable(tableName: String, sqlContext: SQLContext): Unit = {
@transient val conf = getHbaseConfiguration();
@transient var scan = new Scan()
//scan.setAllowPartialResults(Constants.ALLOW_HBASE_PARTIAL_SCAN)
//scan.setCaching(Constants.HBASE_SCAN_CACHE)
val hbaseContext = new HBaseContext(sqlContext.sparkContext, conf);
val hbaseRawRDD = hbaseContext.hbaseRDD(TableName.valueOf(tableName), scan)
hbaseRawRDD.foreach(v =>
{
println(Bytes.toString(v._1.get()))
println((new SimpleDateFormat("yyyy-MM-dd").parse(Bytes.toString(v._1.get()))))
})
println("Length: " + hbaseRawRDD.map(r => r._1.copyBytes()).collect().length);
}
有人可以給我提供了相同的解決方案?