2015-11-24 35 views
0

我遇到掃描儀返回的行中缺失值的情況。HBase Get:掃描儀結果中缺少行值,全部使用全鍵

我的鑰匙看起來像這樣company_recordtype_recordid_childrecordtype_childrowid

的%ID值的GUID。

我正在使用C#,Azure HDInsights(HBase)和Microsoft.HBaseClient來完成這項工作。

如果我創建這樣

Scanner scanSettings = new Scanner() 
{ 

    batch = 10, 
    startRow = Encoding.UTF8.GetBytes(myrowkey), 
    endRow = Encoding.UTF8.GetBytes(myrowkey + "~") 
}; 

其中myrowkey看起來像companya_salesrecord_guid_receipt_ 開始看起來像和結束掃描儀看起來像companya_salesrecord_guid_receipt_guid(S)其中GUID(S)意味着有針對salesrecord許多收據(只是一個愚蠢的例子)

如果我想查找與該銷售記錄相關的所有收據,它應該帶回所有的行值,或者我想。

現在每行至少有8個columndata值,因爲它們是必需的,我已驗證它們存在。我也有一個蜂房覆蓋表,它顯示了所有,沒有部分奇怪的行。 HiveTable中只有NULLS,其中不存在值和完整值。

當我做實際的代碼運行時,我隨機得到只有... 3行值的行,而其中99%都是8行值。

如果我然後採取完整的關鍵只有部分值的數據行(如3)..並使用完全相同的代碼,但限定了整個鍵,我得到所有的值。

我完全失去了如何解決這個問題...甚至調試這個,所以任何想法都真正的讚賞。

回答

0

您可能誤解了掃描手段的參數batchbatch參數設置掃描在每次RPC調用時返回的有多少個單元,並且通常僅在具有大量列的行時使用。您真正想要的是caching參數 - 它控制掃描每個RPC獲得多少個

+0

你是聖誕禮物早來哈哈!非常感謝,完全解決了它。我很困惑,爲什麼隨機行會有更少的值... – user3051556