从 MapReduce 到 SQL
在最近的工作中,为了做数据分析,我开始写一些复杂的 HiveSQL。每次执行 HiveSQL 时,都会看到 Map/Reduce jobs 被调度、执行,直到最后展示出数据。渐渐地我心中多了两个疑问:
MapReduce 引擎如何工作?
SQL 是如何被翻译成 MapReduce job 的?
为了解决这两个疑问,我用比较熟悉的 Go 语言实现了一个玩具版本的 MapReduce 引擎,然后基于此实现基本的 select,join。
本文相关的源码放在仓库 ZhengHe-MD/pset · GitHub 中,欢迎查阅。