我有一个Cassandra表,其中包含数百万行,如下所示。
分区列:owner_id和日期
集群列:video_id,session_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
的{{1}}计算重复观看频率
例如,观看者观看视频的次数例如:观看者owner_id, date and video_id
观看了4次。
输出应如下所示
778f35d0-bfda-11e8-8a1e-1f00dd90d859
然后下一步是查找未指定日期的频率。
答案 0 :(得分:0)
您可以创建一个火花作业(或某种批处理)来生成一个表,以提供定期更新的最新信息,也可以创建一个UDA来生成该表。
我认为,由于使用分区键和群集的第一部分将其范围缩小了很多,因此您可以使用UDA并根据请求生成它(比spark作业更昂贵,但更实时)。假设(((ownere_id,date),video_id)不会有成千上万的条目。如果这样的话,最好使用spark或一些批量处理机制。