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 读取数据

使用 GCP Cloud DataFlow 读取 BigTable 并转换为通用记录

从google bigtable中删除空行的有效方法

写入 Bigtable 时出现问题

Java中的Bigtable身份验证

Bigtable 列族时间范围扫描返回所有行而不考虑时间戳