2013-05-02 3 views
0

xml에서 두 노드를 처리 할 수 ​​있습니다. 그리고 아래의 출력을 얻고있다 :첫 번째 행을 열 한정자 이름으로 출력하는 방법

bin/hadoop fs -text /user/root/t-output1/part-r-00000 
    name:ST17925 currentgrade 1.02 
    name:ST17926 currentgrade 3.0 
    name:ST17927 currentgrade 3.0 

을하지만 같은 출력이 필요합니다 :

studentid curentgrade 
ST17925 1.02 
ST17926 3.00 
ST17927 3.00 

가 어떻게 이것을 달성 할 수 있습니까?

내 완전한 소스 코드 : https://github.com/studhadoop/xml/blob/master/XmlParser11.java

편집 : 솔루션

protected void setup(Context context) throws IOException, InterruptedException { 
    context.write(new Text("studentid"), new Text("currentgrade"));    
    } 

답변

2

나는 당신의 맵리 듀스 코드와 함께이 작업을 수행하기 어려운 생각합니다. 그 이유는 유형이 동일한 경우, 감속기 코드의 설정() 메소드에서 헤더를 쓸 수

    1. 헤더가 같은 데이터 유형이 될 수 없습니다하지만 보장은 없습니다 그 헤더 것이다 출력의 첫 번째 행으로 나타납니다.

    할 수있는 일은 기껏해야 열 한정자의 첫 번째 만남에서지도 코드의 헤더가있는 별도의 HDFS/로컬 파일을 만드는 것입니다. 이 파일을 만들려면 적절한 파일 작업 API를 사용해야합니다. 나중에 작업이 완료되면 다른 프로그램에서이 머리글을 사용하거나 단일 파일로 병합 할 수 있습니다.

  • +0

    k 괜찮습니다. 답장을 보내 주셔서 감사합니다. setup() 메서드를 사용했습니다. –

    +0

    좋습니다. 코드를 살펴볼 수 있습니까? – Rags

    +0

    ys.pasted abv (해결 방법) –

    관련 문제