2012-03-20 2 views
2

비정형 CSV 파일을 처리하는 데 hadoop을 사용하고 싶습니다. 이 파일은 다양한 행 길이의 다른 유형의 여러 데이터 값을 포함한다는 의미에서 구조화되지 않았습니다. 또한이 파일은 수 백 가지이며 파일 크기가 비교적 큽니다 (> 200MB).Hadoop + MapReduce로 비정형 데이터 처리

Book  , ISBN   , BookName      , Authors , Edition 
Book  , 978-1934356081, Programming Ruby 1.9   , Dave Thomas, 1 
Book  , 978-0596158101, Programming Python   , Mark Lutz , 4 
... 
BookPrice, ISBN   , Store      , Price 
BookPrice, 978-1934356081, amazon.com     , 30.0 
BookPrice, 978-1934356081, barnesandnoble.com   , 30.67 
BookPrice, 978-0596158101, amazon.com     , 39.55 
BookPrice, 978-0596158101, barnesandnoble.com   , 44.66 
... 
Book  , ISBN   , BookName      , Authors , Edition 
Book  , 978-1449311520, Hadoop - The Definitive Guide, Tom White , 3 
... 

파일이 자동으로 생성됩니다, 나는 주어진 구조 여부를 제어 할 수 없습니다 :

각 파일의 구조

은과 같이 설명 될 수있다. 기본적으로 헤더 행과 헤더에 일치하는 값이 포함 된 데이터 행이 있습니다. 행 유형은 첫 번째 쉼표로 구분 된 단어로 식별 할 수 있습니다. 예에서 Book 행에는 책 (이름, isbn, 저자, 판)에 대한 메타 데이터가 포함되어 있으며 BookPrice에는 다양한 소매점/공급 업체를위한 책 가격이 포함되어 있습니다.

Map/Reduce를 사용하여 데이터에 대한 일부 집계 계산을 수행하는 방법을 이해하려고합니다. 데이터가 구조화되어 있으면 각 단계에서 어떤 문자가 추출되는지 이해하기가 더 어려워집니다.

예를 들어, 나는 각 책에 대한 평균, MAXMIN 가격을 계산하고 싶습니다 (결합 할 수 있습니다/ISBN별로 그룹화). 내가 주문한 하나의 타입의 CSV 파일에 데이터를 추출하고 (grep, python, awk 등을 사용하여) 거기에서 일하는 몇 가지 사전 처리를 할 수 있다는 것을 알았지 만 그것은 M/R + Hadoop 사용의 요점을 무너 뜨릴 것이다. , 추가 작업이 많이 필요할 것입니다.

여러 맵 스테이지를 사용하는 것에 대해 생각해 보았습니다.하지만이 모든 것에 상당히 익숙하며 어떻게 시작해야하는지 모르겠습니다.

샘플 파일/쿼리에 대해 M/R 작업 (Java)을 구현하려면 어떻게해야합니까? 감사.

답변

3

나는 비슷한 상황에 직면하여 다음과 같은 디자인을했습니다.
OpenCSV 파서를 사용하여 실제로 레코드를 분할하는 입력 형식을 개발했습니다. 그런 다음 값으로 MapWritable을 채웠습니다. 각지도에는 "fieldName-> field value"항목이있는 레코드가 하나씩 있습니다. 귀하의 경우에는
나는 등 "저자 기록"

다음

당신은 당신이 관심과 골재의 기록을 인식 비교적 간단한 코드를 작성할 수 있습니다 매퍼에서 "가격 기록"과 같은 레코드 유형을 포함하는 열거 같은 주요 뭔가를 만들 것 그들.

좀 더 복잡하지만 좀 더 보람있는 방법은 파일을 구조의 테이블로 매핑하는 Hive 용 SerDe를 만드는 것입니다. 레코드 유형 (위에서 설명한)과 KeyValueMap 열. (열에 대한 하이브 지원 맵 유형). 그러면 반 구조화 된 데이터에 대해 SQL을 작성할 수 있습니다.

+0

매우 근사한 접근, 감사합니다. 실제 구현 세부 정보/코드를 공유 하시겠습니까? – sa125

+0

난 상관 없어. 나에게 이메일을 보내면 기꺼이 도와 드리겠습니다. –

+0

David 어떻게 파일에서 헤더를 분리합니까? http : //stackoverflow.com/questions/21040166/aggregation-in-mapreduce –

관련 문제