HBase Get:扫描仪结果中缺少行值,所有这些都带有完整键

HBase Get: Row values missing from Scanner results, all there with full key

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

我的钥匙看起来像这样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) 表示该销售记录有很多收据(只是一个愚蠢的例子)

如果我想查找与该销售记录关联的所有收据,它应该返回所有行值,或者我认为是这样。

现在每行至少有 8 个列数据值,因为它们是必需的并且我已经验证它们存在。我还有一个蜂巢覆盖物 table,它显示了所有内容,没有部分奇怪的行。 HiveTable 中只有 NULLS 值不存在,而完整值存在。

当我执行实际代码时 运行,我随机得到只有 say... 3 行值的行,而其中 99% 都是 8 行值。

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

我完全不知道如何解决这个问题......甚至调试这个问题,所以任何想法都非常感谢。

您可能误解了 Scan 的 batch 参数的含义。 batch 参数设置每次 RPC 调用时扫描 returns 的 单元格 数量,它通常仅在您的行包含大量列时使用。您真正想要的是 caching 参数 — 它控制每个 RPC 扫描获得的