【问题标题】:Can I read bigtable records with cbt by time?我可以用 cbt 按时间读取 bigtable 记录吗?
【发布时间】:2021-12-15 00:32:09
【问题描述】:

我想读取使用 cbt 写入 bigtable 的最后(最新)记录。但是,文档没有提到 cbt read 读取记录的顺序。我不知道行键是什么。

有没有办法通过插入时间用 cbt 读取记录?

更新:

这是我在阅读表格时看到的:

cbt read table_name count=10 | grep processedTime
2021/12/17 09:20:42 -creds flag unset, will use gcloud credential
  general:processedTime                    @ 2021/06/29-14:40:04.028000
  general:processedTime                    @ 2021/06/17-12:32:04.055000
  general:processedTime                    @ 2021/06/17-12:32:40.032000
  general:processedTime                    @ 2021/06/17-12:32:43.047000
  general:processedTime                    @ 2021/06/10-18:45:53.495000
  general:processedTime                    @ 2021/06/17-12:31:28.772000
  general:processedTime                    @ 2021/06/17-12:30:41.205000
  general:processedTime                    @ 2021/06/17-12:30:33.960000
  general:processedTime                    @ 2021/06/29-14:40:17.811000
  general:processedTime                    @ 2021/06/17-12:32:06.795000
  general:processedTime                    @ 2021/06/17-12:31:49.202000

cbt 读取没有按时间顺序给出结果。

有没有办法让 cbt 读取按时间排序结果?

【问题讨论】:

    标签: bigtable cbt


    【解决方案1】:

    目前,cbt 工具可能无法保证数据按排序顺序返回,特别是在有大量数据时。 Bigtable 可能需要时间来组织它。但是基于documentation,Bigtable 读取请求的顺序是它们的存储顺序。因此,最新的记录必须在顶部。

    参考我所做的 2 个测试场景。一是插入数据不指定时间戳,二是插入数据指定时间戳。无论哪种方式,我都根据时间戳按降序获取数据。

    未指定时间戳:

    @cloudshell:~ $ cbt set my-table r1 cf1:c1=val5
    2021/12/15 10:51:52 -creds flag unset, will use gcloud credential
    @cloudshell:~ $ cbt read my-table
    2021/12/15 10:52:07 -creds flag unset, will use gcloud credential
    ----------------------------------------
    r1
      cf1:c1                                   @ 2021/12/15-10:51:59.760000
        "val5"
      cf1:c1                                   @ 2021/12/15-10:26:00.471000
        "val4"
      cf1:c1                                   @ 2021/12/15-10:25:26.863000
        "val3"
      cf1:c1                                   @ 2021/12/15-10:24:58.021000
        "val2"
      cf1:c1                                   @ 2021/12/15-10:24:52.259000
        "val1"
    @cloudshell:~ $ cbt read my-table cells-per-column=1
    2021/12/15 10:52:17 -creds flag unset, will use gcloud credential
    ----------------------------------------
    r1
      cf1:c1                                   @ 2021/12/15-10:51:59.760000
        "val5"
    

    指定的时间戳:

    CBT tool 可能无法完全涵盖您的用例。我的建议是向他们的 GitHub 存储库提交功能请求。不保证何时实施。

    【讨论】:

    • Read requests to Bigtable stream back the contents of the requested rows in key order, meaning they are returned in the order in which they are stored. 插入顺序不同。不会根据插入时间返回行。
    • @DeanSchulze 嗨,OP,检查此测试,其中在插入时指定了时间戳。如您所见,Bigtable 以递减值读取时间戳。 i.stack.imgur.com/LkrQf.png你能描述一下在这种情况下你想看到什么吗?
    • @DeanSchulze 请检查我的答案。我用其他信息更新了它。
    • 我用 cbt read 的输出更新了我的问题。结果不按时间排序。
    • @DeanSchulze 请查看我的更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2011-03-06
    相关资源
    最近更新 更多