2016-05-31 13 views

答えて

8

{// を発する} {// スキップ}、データはキー値として読み出されますペア。キーは、次の行が始まるバイトオフセットです。 1行目は常にゼロです。だからマッパー関数では、次の操作を実行します

@Override 
    public void map(LongWritable key, Text value, Context context) throws IOException { 
     try { 
      if (key.get() == 0 && value.toString().contains("header") /*Some condition satisfying it is header*/) 
       return; 
      else { 
       // For rest of data it goes here 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    }  
+0

私はたくさんの試してみた後、同じことを使用していた! – Kunal

+0

'keys == 0'は' keys.get()== 0'であるべきだと思います。 LongWritableはintと直接比較できません。私が間違っているなら、私を訂正してください。 – yusong

+0

である。 'get()'を使う必要があります。ありがとう! @yusong – ViKiG

1

ファイルは複数のノードに格納できるため、どのマシンにヘッダーパーツが存在し、どのマッパーがファイルのその部分を処理しているのかはわかりません。 Mapper自体のヘッダーを除外することができます。このためにヘッダーを知る必要があります。たとえば、 String [] cols = line.tokenize(); IF(COLS [0] .equals( "ヘッダ"))ファイルの読み取り中に他のマッパーで

関連する問題