HBase Get:Scanner结果中缺少行值,全部都是全键

时间:2015-11-24 15:26:58

标签: c# azure get hbase

我的情况是扫描仪返回的行中缺少值。

我的密钥看起来像这个company_recordtype_recordid_childrecordtype_childrowid

%id值是guids。

我正在使用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_ Start看起来像那样,End看起来像companya_salesrecord_guid_receipt_guid(s),其中guid(s)表示该salesrecord有很多收据(只是一个愚蠢的例子)

如果我想查找与该salesrecord相关的所有收据,它应该带回所有行值,或者我认为。

现在每行至少有8个columndata值,因为它们是必需的,我已经确认它们存在。我还有一个蜂巢盖表,它显示了所有,没有部分奇怪的行。仅HiveTable中的NULLS,其中值不存在,而完全值存在于其中。

当我执行实际代码时,我随机获取的行只包含... 3行值,而其中99%都是8行值。

如果我然后将完整的密钥带到只有部分值的数据行(如3)..并使用完全相同的代码,但限定整个密钥,我得到所有的值。

我完全迷失了如何解决这个问题......甚至调试这个问题,所以任何想法都会得到真正的体会。

1 个答案:

答案 0 :(得分:0)

您可能误解了Scan的batch参数意味着什么。 batch参数设置扫描在每次RPC调用时返回的单元的数量,并且通常仅在具有大量列的行时使用。你真正想要的是caching参数 - 它控制每个RPC扫描获得的的数量。