2017-06-02 278 views
0

當我嘗試通過scala程序將具有一列的Row鍵放入Hbase表時,我在輸出文件(Hbase表)中看到了這種32位表示。這完全阻止了我的工作。Hbase表填充了scala代碼中值= x00 x00 x00 x00 x00 x00 x00 x00 x00

請告知我們如何才能在Hbase表中獲得'Double'類型字段的正確表示。

與此相關的代碼如下:我在這裏丟失了什麼?

VarValue_Output: Double 
p(3).toDouble 
final val colVarValueBytes = Bytes.toBytes("VarValue_Output") 
put.add(cfDataBytes, colVarValueBytes, Bytes.toBytes(Data.VarValue_Output) 

感謝 維賈雅·庫馬爾Pabothu

回答

0

它的預期行爲。 您已經保存了Double數據類型,但HBase shell(我假設您使用它)不知道任何事情(HBase中的所有內容均表示爲字節數組)。因此,在默認情況下它試圖從你的字節數組中提取字符串,明顯顯示的Unicode符號的一些無信息的列表:

Bytes.toBytes("15.0")不等於Bytes.toBytes(15.0)

  1. 嘗試將其保存爲字符串轉換爲字節數組(你就可以在底座殼閱讀)
  2. 從您的應用程序讀取它,並確保你改變你的列值Bytes.toDouble
+0

請參閱下面我的代碼,請告訴我在哪裏DOI恩錯了。 (日期和時間) –

+0

def convertToPut(sensor:Sensor):(ImmutableBytesWritable,Put)= { val dateTime = sensor.TimeStamp_Output val rowkey = sensor.ToolName_Output +「_」+ dateTime val put = new Put(Bytes.toBytes(rowkey)) put.add(cfDataBytes,colLookupBytes,Bytes.toBytes(sensor.Lookup)) \t put.add(cfDataBytes,colVarNameBytes,Bytes.toBytes(sensor.VarName_Output)) put.add(cfDataBytes,colVarValueBytes,Bytes.toBytes( sensor.VarValue_Output)) 回報(新ImmutableBytesWritable(Bytes.toBytes(rowkey)),放) } –

+0

定義 - 最終VAL colVarValueBytes = Bytes.toBytes( 「VarValue_Output」) –

相關問題