我遇到一种情况,扫描仪返回的行中缺少值。
我的密钥看起来像这个公司\u recordtype \u recordid \u childrecordtype \u 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\u salesrecord\u guid\u receipt\u start看起来像那样,end看起来像companya\u salesrecord\u guid\u receipt\u guid(s),其中guid(s)表示该salesrecord有许多收据(只是一个愚蠢的示例)
如果我想查找与salesrecord相关联的所有收据,它应该返回所有的行值,或者我这么认为。
现在每行至少有8个columndata值,因为它们是必需的,并且我已经验证了它们的存在。我也有一个Hive覆盖表在这上面,它显示了他们所有,没有部分奇怪的行。在hivetable中只有值不存在的空值和值存在的全值。
当我执行实际的代码运行时,我随机得到只有say。。。其中3行值,99%都是8行值。
如果我对只有部分值的数据行使用full键(比如3)。。使用完全相同的代码,但是限定整个键,我得到所有的值。
我完全不知道如何解决这个问题。。。或者甚至调试这个,所以任何想法都是值得赞赏的。
1条答案
按热度按时间ebdffaop1#
你可能误解了什么
batch
扫描装置的参数。这个batch
参数设置每次rpc调用时扫描返回的单元格数,通常仅当您有包含大量列的行时才使用。你真正想要的是caching
参数-它控制每个rpc扫描获得的行数。