次のファイルがあります。
City.dat
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)。このようにして、首都ごとに 1 行で必要なすべての情報を含むテーブルを取得する必要があります。
しかし、これは 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"))
これは、結合されるはずの 2 つのファイルを定義するだけです。しかし、結合キーとレコードとして定義するものを定義するにはどうすればよいでしょうか (私の場合、各ファイルの 1 行がレコードになるはずです)。