我有一项繁重的工作,其中一个单元格可以包含数十万个单元格(数据分为按位置+时间键控的行。对于某些位置和时间,可能有很多单元格)。该作业处理每个单元格,但是当单元格数量非常大时,我会遇到扫描仪超时。
我可以增加超时,例如 hbase.client.scanner.timeout.period,但它们必须是巨大的值(因为单个单元格可能需要 200 毫秒的小时数),这似乎并不理想。
我以为我可以使用 scan.setAllowPartialResults() 和 scan.setMaxResultSize(),但这只有在 scan.getFilter().hasFilterRow() 为 false 时才有效,在我的情况下它不是。我还看到了scanner.setMaxNumRows(),但是我看不到任何从crunch 到scanner 的方法。
我可以将所有数据写到一个临时位置,然后在 reduce 中处理它,但这似乎是错误的。我觉得我一定错过了应该如何做的一些事情。
一个紧缩的工作应该如何处理它必须处理大量单元而不超时的情况?谢谢。