Bigtable 读取行数递增率
Posted
技术标签:
【中文标题】Bigtable 读取行数递增率【英文标题】:Bigtable increasing rate of reading rows 【发布时间】:2021-01-21 04:09:42 【问题描述】:我正在做一个实验来测试 Bigtable 与使用 Postgres 相比的功能。
我设置了一个包含 50000 行和 500 列的表 我正在尝试使用以下代码读取所有这些数据
# Create the Row Keys
row_set = RowSet()
start_key = f"tu7#s777#raw#"
end_key = f"tu7#s777#raw$"
row_set.add_row_range_from_keys(
start_key=start_key.encode('utf-8'),
end_key=end_key.encode('utf-8'))
# Read the Rows
rows = table.read_rows(row_set=row_set)
payload =
t = time.time()
for idx, row in enumerate(rows):
pass
print(time.time() - t)
输出是查询花费了大约 4 到 5 分钟
行的读取速率约为每秒 200-600 行
我想知道,因为 Bigtable 文档说它支持“每秒最多 10,000 行读取”和“最多 220 MB/s 的扫描”,有没有办法提高我的读取率。我正在通过从位于 n1 标准 1 机器上的 jupyter 笔记本上的 python 脚本读取数据来运行我的测试。读取率低是处理器的原因吗?还是网络吞吐量或其他因素?
【问题讨论】:
您确定您使用的是 SSD 吗?你试过没有enumerate
吗?你看过这个文件cloud.google.com/bigtable/docs/performance吗?这个话题有很多信息...
是的,我确定我在使用 SSD
尝试删除枚举,没有区别
我没有操场来测试它,但如果这是可重现的,我建议在cloud.google.com/bigtable/docs/support/…提出一个错误
【参考方案1】:
尽量减少列数。连续 500 个可能超过每行 1KB,估计 10k/s 是基于 https://cloud.google.com/bigtable/docs/performance。
而不是
key1 col1 col2
试试
key1-col1 col1
key1-col2 col2
【讨论】:
以上是关于Bigtable 读取行数递增率的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Google 的规范示例从 Bigtable 读取数据