ما هو استخدام "مفتاح K1" في Org.apache.hadoop.mapred.mapper؟

StackOverflow https://stackoverflow.com/questions/778497

  •  13-09-2019
  •  | 
  •  

سؤال

أنا أتعلم أباتشي هيدوب وكنت أبحث في مثال WordCount org.apache.hadoop.examples.wordcount.. وبعد لقد فهمت هذا المثال، ومع ذلك أستطيع أن أرى أن المتغير مفتاح طويل لم يستخدم في

(...)
public void map(LongWritable key, Text value, 
                    OutputCollector<Text, IntWritable> output, 
                    Reporter reporter) throws IOException {
      String line = value.toString();
      StringTokenizer itr = new StringTokenizer(line);
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        output.collect(word, one);
      }
    }
(...)

ما هو استخدام هذا المتغير؟ هل يمكن لشخص ما أن يعطيني مثالا بسيطا حيث سيتم استخدامه؟ شكرًا

هل كانت مفيدة؟

المحلول

عندما يكون InputFormat هو textInputFormat، فإن المفتاح هو إزاحة البايتات من بداية ملف الإدخال الحالي.

القيمة هي ببساطة خط النص في تلك الإزاحة.

إذا تم استخدام SequenceFileInPutFormat، فإن المفتاح سيكون كل ما هو محشوة في الموضع الرئيسي للسجل ". نفسه بالنسبة للقيمة.

خلاصة أسفل هو أن أنواع المفاتيح / القيمة تعتمد على نوع الإدخال (النص، ملف التسلسل، إلخ).

ckw.

نصائح أخرى

يمكن أن أكون مخطئا (لدي قراءة الخريطة / تقليل البرامج التعليمية، لكنني لم أستخدمها للمشاريع الحقيقية بعد)، لكنني أعتقد بشكل عام أن يكون معرف إدخال المدخلات؛ على سبيل المثال، Tuple (اسم الملف ورقم السطر). في هذه الحالة بالذات، من المفترض أن رقم الخط المفترض، وليس من الفائدة عن عدد الكلمات. يمكن استخدامه إذا كانت الفكرة هي، على سبيل المثال، إجمالي عدد الكلمات على أساس لكل خط، وليس على أساس لكل ملف (أو للحصول على ملفات متعددة إذا كان المفتاح يحتوي على هذه المعلومات).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top