2014-03-12 1 views
2

하둡 매퍼에 의해 생성되는 파일에 생성되는 이유 :탭 공간은 내가 이런 매퍼 쓴

@Override 
protected void map(VarLongWritable userId, RecommendedItemsWritable recommendations, Context ctx) throws IOException, 
     InterruptedException { 

    List<RecommendedItem> items = recommendations.getRecommendedItems(); 
    for (RecommendedItem item : items) { 
     long userID = Long.valueOf(userId.toString().trim()); 
     System.out.println(userID); 
     ctx.write(new LongWritable(userID), new Text(item.getItemID() + "," + item.getValue())); 
    } 
} 

를하고 다음과 같은 내용 생성 :

1 ,105,3.8652005 
1 ,106,3.7047918 
1 ,104,3.6800702 
2 ,106,2.7261393 
2 ,105,2.4083052 
2 ,107,2.0 
3 ,106,3.5539715 
3 ,102,3.4113002 
3 ,103,3.323024 
4 ,107,4.674651 
4 ,105,4.371781 
4 ,102,4.0743575 
5 ,107,3.754705 

실제로 난 그냥 원하는을 생성 된 파일을 하이브 테이블에로드합니다. 이지만 탭 공간에서 하이브 테이블의 값이 잘못되었습니다.

파일의 탭 공간을 제거 할 수있는 방법이 있습니까?

답변

0

키와 값 사이의 탭 공간을 제거하는 방법이 없다고 생각합니다. 당신은 감속기가 필요하지 않은 경우에는, 다음, 바로 매퍼의 출력의 키에있는 정보를 모두 넣어 :

ctx.write(new Text(userID + "," + item.getItemID() + "," + item.getValue()), new Text("")); 

텍스트로지도 출력 키의 유형을 변경.

+0

예, 감사합니다. 이것은 효과가있다. – jeffreyji

+1

실제로 이것에 대한 설정이 있습니다 : mapred.textoutputformat.separator ","로 설정하고, 그러면 괜찮습니다. – jeffreyji