在 Accumulo 中扫描大量数据
Scanning high volumes of data in Accumulo
所以从 Accumulo table 读取大量数据时会遇到问题。我可以肯定地说我了解 Accumulo 的基础知识,但我仍在学习一些更精细的细节。
我在 Accumulo 数据库中有两个 table,一个保存对象的属性,另一个保存指向对象 O(1)
查找时间的索引。我将使用 person
对象作为示例。
Person Table
row_id colf colq val
uuid person name joe
uuid person age 25
uuid person country usa
Person Index Table
row_id colf colq val
joe person uuid
所以我目前获取所有人的方式是扫描索引 table 并且对于索引 table 中的每个条目,然后我用密钥扫描人 table从索引 table 中收集,然后根据从人 table.
中提取的内容构建 person
对象
对于低容量,这不会造成问题,但当我扩大规模时,10k 人的记录,查询需要大约 3 秒。当我扩展到 100k 个人记录时,查询可以超过 30 秒。
我最初的想法是,因为我正在查询索引 table 然后随后查询人 table,这会占用更多时间,大约是正常情况下的两倍(尽管我无法确认).
如果我知道我要查询人 table 中的所有对象,是否有更快的方法只查询 table?就像只是扫描,当键改变时,你知道你在下一个对象上吗?还是我目前正在做的首选方法是,这类查询需要一段时间,因为它们太大了? (我是大规模操作的新手)。
是否建议只限制查询说 5k 条记录,然后在我需要获取下一个 5k 时重新查询?
欢迎任何建议!
If I know I am going to want all objects in the person table, is there
a faster way to just only query that table?
如果你要阅读所有的人,使用索引有点毫无意义。只需扫描您的人员 table。如果你只想要每个人的某些属性,你可以在 Scanner/BatchScanner.
上使用 fetchColumn(Text, Text)
方法
when keys change, you know you are on the next object
如果您只是处理每一行,您可以尝试使用 WholeRowIterator。
所以从 Accumulo table 读取大量数据时会遇到问题。我可以肯定地说我了解 Accumulo 的基础知识,但我仍在学习一些更精细的细节。
我在 Accumulo 数据库中有两个 table,一个保存对象的属性,另一个保存指向对象 O(1)
查找时间的索引。我将使用 person
对象作为示例。
Person Table
row_id colf colq val
uuid person name joe
uuid person age 25
uuid person country usa
Person Index Table
row_id colf colq val
joe person uuid
所以我目前获取所有人的方式是扫描索引 table 并且对于索引 table 中的每个条目,然后我用密钥扫描人 table从索引 table 中收集,然后根据从人 table.
中提取的内容构建person
对象
对于低容量,这不会造成问题,但当我扩大规模时,10k 人的记录,查询需要大约 3 秒。当我扩展到 100k 个人记录时,查询可以超过 30 秒。
我最初的想法是,因为我正在查询索引 table 然后随后查询人 table,这会占用更多时间,大约是正常情况下的两倍(尽管我无法确认).
如果我知道我要查询人 table 中的所有对象,是否有更快的方法只查询 table?就像只是扫描,当键改变时,你知道你在下一个对象上吗?还是我目前正在做的首选方法是,这类查询需要一段时间,因为它们太大了? (我是大规模操作的新手)。
是否建议只限制查询说 5k 条记录,然后在我需要获取下一个 5k 时重新查询?
欢迎任何建议!
If I know I am going to want all objects in the person table, is there a faster way to just only query that table?
如果你要阅读所有的人,使用索引有点毫无意义。只需扫描您的人员 table。如果你只想要每个人的某些属性,你可以在 Scanner/BatchScanner.
上使用fetchColumn(Text, Text)
方法
when keys change, you know you are on the next object
如果您只是处理每一行,您可以尝试使用 WholeRowIterator。