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



我目前正在寻找处理两个非常大的数据集的最佳方法。

我有两个BigQuery表:

  • 一个包含流事件的表(十亿行)
  • 一个包含标签和相关事件属性的表(100,000行)

我想用基于事件属性的适当标记标记每个事件(一个事件可以有多个标记)。然而,对于数据集的大小来说,SQL交叉连接似乎太慢了。

继续使用mapreduce管道的最佳方法是什么非常昂贵的洗牌阶段,因为每个事件必须与每个标签进行比较。

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

Google Cloud Dataflow很适合这个。

假设标签数据足够小,可以装入内存中,您可以通过将其作为SideInput传递来避免洗牌。

您的管道看起来像下面的

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

如果你的标签数据太大,内存无法容纳,你很可能不得不使用Join

相关内容

  • 没有找到相关文章

最新更新