我有以下文件:
城市数据
Andorra la Vella|ad|Andorra la Vella|20430|42.51|1.51|
Canillo|ad|Canillo|3292|42.57|1.6|
Encamp|ad|Encamp|11224|42.54|1.57|
...
国家.dat
Andorra|ad|Andorra la Vella|Andorra la Vella|69865|468|
United Arab Emirates|ae|Abu Dhabi|Abu Dhabi|2523915|82880|
Afghanistan|af|Kabul|Kabul|28513677|647500|
...
我需要做的是进行 Map Side Join 以获取 Country.dat 文件中列出的人口(City.dat 中的第 4 列)和每个首都的名称(Country.dat 中的第 3 列)。所以我得到了基本的想法。两个文件的连接键将是城市值(City.dat 中的第 1 列和 Country.dat 中的第 3 列)。这样,我应该得到一个表格,其中包含我需要的所有信息,每个首都都有一行。
但是这在 Hadoop 中究竟是如何工作的呢?我如何告诉 Hadoop 两个文件中的连接键是什么(我首先需要从每一行中解析出来,不是吗?)我找到的所有代码看起来都是这样的:
inner(tbl(org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat.class,
"/user/cloudera/City.dat"),
tbl(org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat.class,
"/user/cloudera/Country.dat"))
这只是定义了应该连接的两个文件。但是如何定义连接键以及我定义为记录的内容(在我的情况下,每个文件的一行应该是记录)?