gpt4 book ai didi

sql - 如何创建内部漏斗分析?

转载 作者:可可西里 更新时间:2023-11-01 15:38:25 25 4
gpt4 key购买 nike

我想创建内部漏斗分析基础架构。所有用户事件提要信息都将写入所选的数据库/DW,然后,当我动态定义漏斗时,我希望能够为漏斗中的每个阶段选择 session 数。

我在任何地方都找不到创建这种东西的例子。有人说我应该为此使用 Hadoop 和 MapReduce,但我在网上找不到任何示例。

最佳答案

您的 MapReduce 非常简单:

Mapper 读取日志文件中的 session 行,其输出为 (stag-id, 1)

将 Reducer 的数量设置为等于阶段的数量。

Reducer 对每个阶段的值求和。就像 wordcount 示例(这是 Hadoop 的“Hello World”- https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html#Example%3A+WordCount+v1.0)。

您必须设置 Hadoop 集群(或使用 Amazon 上的 Elastic Map Reduce)。

要动态定义漏斗,您可以使用 Hadoop 的 DistributedCache 功能。要查看结果,您必须等待 MapReduce 完成(最少几十秒;如果是 Amazon 的 Elastic MapReduce,则需要几分钟;时间取决于数据量和集群的大小)。

另一种可以更快地给您结果的解决方案 - 使用数据库:从 mylogs 中按阶段选择 count(distinct session_id) 组;

如果您有太多数据无法快速执行该查询(它会执行全表扫描;HDD 传输速率约为 50-150MB/秒 - 数学很简单)- 那么您可以使用运行在HDFS(Hadoop分布式文件系统)。

在这种情况下,您的选择是(我在此处仅列出开源项目):

Apache Hive(基于 Hadoop 的 MapReduce,但如果您将数据转换为 Hive 的 ORC 格式 - 您将更快地获得结果)。

Cloudera 的 Impala - 不基于 MapReduce,可以在几秒钟内返回结果。为获得最快的结果,请将您的数据转换为 Parquet 格式。

Shark/Spark - 内存分布式数据库。

关于sql - 如何创建内部漏斗分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com