如何在cassandra中计算频率

nfzehxib  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(371)

我有一张Cassandra表,上面有数百万行,如下所示。
分区列:所有者id和日期
集群column:video_id,会话id

owner_id | date       | video_id | session_id                           | viewer_id
---------+------------+----------+--------------------------------------+--------------------------------------
  601590 | 2018-09-24 |   606816 | 0769ce70-bfc4-11e8-b753-a3c9ebf616e5 | c19ac510-9a35-11e8-9b4f-d79b67cf2efe
  601590 | 2018-09-24 |   606816 | 0af06b70-c038-11e8-ba96-ef1af2a222e5 | 0dfdc7f0-c037-11e8-bb05-8d4b0b9097e8
  601590 | 2018-09-24 |   606816 | 0bb97020-bfdd-11e8-bf24-dff4b25dd64e | ab4a1730-bfdc-11e8-8026-ddbc4c7d64f2
  601590 | 2018-09-24 |   606816 | 0dfdc7f0-c037-11e8-bb05-8d4b0b9097e8 | 0dfdc7f0-c037-11e8-bb05-8d4b0b9097e8
  601590 | 2018-09-24 |   606816 | 155dc510-bfdb-11e8-bace-516ebe0ca984 | 778f35d0-bfda-11e8-8a1e-1f00dd90d859
  601590 | 2018-09-24 |   606816 | 25378a20-bfdb-11e8-a28b-7de4597a9df5 | 778f35d0-bfda-11e8-8a1e-1f00dd90d859
  601590 | 2018-09-24 |   606816 | 2fc21170-bfba-11e8-9929-d17143803579 | 2fc21170-bfba-11e8-9929-d17143803579
  601590 | 2018-09-24 |   606816 | 3c287eb0-bfdb-11e8-b0ef-6d0d9c68d2f9 | 778f35d0-bfda-11e8-8a1e-1f00dd90d859
  601590 | 2018-09-24 |   606816 | 4265f5c0-c038-11e8-b060-552d6bdcb552 | 0dfdc7f0-c037-11e8-bb05-8d4b0b9097e8
  601590 | 2018-09-24 |   606816 | 49aa9820-bfdb-11e8-bb57-4f24d17d68df | 778f35d0-bfda-11e8-8a1e-1f00dd90d859

我想计算重复观看频率的基础上 viewer_id 鉴于 owner_id, date and video_id 比如一个观众观看一段视频的次数,例如:viewer 778f35d0-bfda-11e8-8a1e-1f00dd90d859 看了4遍。
输出应该如下所示

Number of views | frequency
----------------|-----------
        1       |     3
        3       |     1
        4       |     1

下一步是找出没有指定日期的频率。

csbfibhn

csbfibhn1#

您可以创建一个spark作业(或某种批处理)来生成一个表,提供定期运行时保持最新的信息,也可以创建一个uda来生成它。
我认为,由于使用分区键和集群的第一部分可以很好地缩小它的范围,因此可以使用uda并根据请求生成它(比spark作业更昂贵但更实时)。这是假设一个((ownere\u id,date),video\u id)不会有数以万计的条目。如果那样会更好的使用Spark或一些批量处理机制。

相关问题