複数の入力ソースがあり、Sqoop の codegen ツールを使用して各入力ソースのカスタム クラスを生成しました。
public class SQOOP_REC1 extends SqoopRecord implements DBWritable, Writable
public class SQOOP_REC2 extends SqoopRecord implements DBWritable, Writable
Map 側では、入力ソースに基づいて、上記の 2 つのクラスのオブジェクトを適宜作成します。
キーは「テキスト」タイプで、2 つの異なるタイプの値があるため、値の出力タイプを「書き込み可能」のままにしました。
reduce 側では、値の型を Writable として受け入れます。
public class SkeletonReduce extends Reducer<Text,Writable, Text, Text> {
public void reduce(Text key, Iterable<Writable> values, Context context) throws IOException,InterruptedException {
}
}
私も設定しました
job.setMapOutputValueClass(Writable.class);
実行中はreduce関数には一切入りません。
これが可能かどうか誰かに教えてもらえますか?もしそうなら、私は何を間違っていますか?