मैं इस जावा कोड है में जेनरिक के साथ स्थिर जावा वर्गों के उपवर्गों संदर्भ के लिए कैसे:स्काला
public class TestMapper extends AppEngineMapper<Key, Entity, NullWritable, NullWritable> {
public TestMapper() {
}
// [... other overriden methods ...]
@Override
public void setup(Context context) {
log.warning("Doing per-worker setup");
}
}
... जो मैं करने के लिए परिवर्तित कर दिया है:
class TestMapper extends AppEngineMapper[Key, Entity, NullWritable, NullWritable] {
// [... other overriden methods ...]
override def setup(context: Context) {
log.warning("Doing per-worker setup")
}
}
अब वास्तविक समस्या :
प्रसंग एक नेस्टेड सीएल के रूप में परिभाषित किया गया है org.apache.hadoop.mapreduce.Mapper वर्ग के भीतर गधा:
public static class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> {
//[... some other methods ...]
protected void setup(org.apache.hadoop.mapreduce.Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>.Context context) throws java.io.IOException, java.lang.InterruptedException { /* compiled code */ }
public class Context extends org.apache.hadoop.mapreduce.MapContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {
public Context(org.apache.hadoop.conf.Configuration configuration, org.apache.hadoop.mapreduce.TaskAttemptID conf, org.apache.hadoop.mapreduce.RecordReader<KEYIN,VALUEIN> taskid, org.apache.hadoop.mapreduce.RecordWriter<KEYOUT,VALUEOUT> reader, org.apache.hadoop.mapreduce.OutputCommitter writer, org.apache.hadoop.mapreduce.StatusReporter committer, org.apache.hadoop.mapreduce.InputSplit reporter) throws java.io.IOException, java.lang.InterruptedException { /* compiled code */ }
}
तो मैं अपने स्काला वर्ग नहीं बता सकता, जहां/क्या प्रसंग वास्तव में है। यदि मैपर कोई जेनरिक था मैं संदर्भ सकता प्रसंग के माध्यम से
Mapper#Context
लेकिन मैं कैसे बता सकता है कि मैपर जेनेरिक्स है?
Mapper[_,_,_,_]#Context
... काम नहीं किया।
प्रश्न के लिए बहुत बहुत धन्यवाद, मैंने इन कक्षाओं में कई घंटे बिताए हैं! –