Mapreduce 连接两个大型数据集的最佳策略

Mapreduce 连接两个大型数据集的最佳策略,mapreduce,google-cloud-dataflow,Mapreduce,Google Cloud Dataflow,我目前正试图找到处理两个非常大的数据集的最佳方法 我有两个BigQuery表: 一个包含流式事件的表(十亿行) 一个包含标记和关联事件属性的表(100000行) 我希望根据事件属性使用适当的标记来标记每个事件(一个事件可以有多个标记)。但是,对于数据集大小而言,SQL交叉连接似乎太慢 使用mapreduces和avoiding管道的最佳方式是什么 非常昂贵的洗牌阶段,因为每个事件都必须与每个标签进行比较 我还计划使用谷歌云数据流,这个工具适合这个任务吗?谷歌云数据流非常适合这个任务 假设标签

我目前正试图找到处理两个非常大的数据集的最佳方法

我有两个BigQuery表:

  • 一个包含流式事件的表(十亿行)
  • 一个包含标记和关联事件属性的表(100000行)
我希望根据事件属性使用适当的标记来标记每个事件(一个事件可以有多个标记)。但是,对于数据集大小而言,SQL交叉连接似乎太慢

使用mapreduces和avoiding管道的最佳方式是什么 非常昂贵的洗牌阶段,因为每个事件都必须与每个标签进行比较


我还计划使用谷歌云数据流,这个工具适合这个任务吗?

谷歌云数据流非常适合这个任务

假设标签数据足够小,可以放入内存中,则可以通过将其作为一个标记传递来避免混乱

您的管道将如下所示

  • 使用两个转换读取每个表
  • 创建一个标签,用它的标签标记每个事件
  • DoFn的输入PCollection应该是事件。将标签表作为侧面输入传递
  • 使用转换将结果写回BigQuery(假设您希望将BigQuery用于输出)

如果您的标签数据太大,无法存储在内存中,您很可能必须使用。

您好,我发布了一个答案。如果您能提供更多关于事件如何与标记匹配的信息,我们可能会提供更多信息。您好!谢谢你的回答。事件是位置数据,与具有一对多关系的实体关联,标记只是位置检查点。目标是使用groupByKey.Thank用它的事件的所有标记来标记实体。我提供的答案对你有用吗?如果没有,请告诉我。