2014-10-25 1 views
0

원시 트위터 데이터 세트 (약 1GB의 텍스트 파일)를 사전 처리해야합니다. 사전 처리 (중지 단어, 특수 기호, URL 제거 포함)에서 lucene을 사용하여 인덱싱을 수행합니다.트위터 데이터 전처리/위생 처리

트윗을 살균하는 가장 좋은 방법을 제안 해주세요.

60730027 6298443824 thank you echo park. you've changed A LOT, but as long as I'm getting paid to make you move, I'm still with it! 2009-12-03 02:54:10 
60730027 6297282530 fat Albert Einstein goin in right now over here!!! 2009-12-03 01:35:22 
60730027 6283122724 SATURDAY NIGHT AT THE TAVERN: http://yfrog.com/4aka3cj 2009-12-02 16:21:40 
60730027 6283105517 FRIDAY NIGHT AT THE GRIFFIN: http://yfrog.com/3glqzj 2009-12-02 16:21:04 

첫번째 열 번호는 사용자의 위치에 대응한다 : 여기서

데이터의 샘플이다. 그러나 두 번째 열 번호가 무엇인지에 대해서는 확신 할 수 없습니다.

데이터를 살균, 나는이 정지 문자, 도시 이름으로 사용자 위치 코드를 교체 타임 스탬프를 제거, 제거하는 것 등

URL은 그것에 대해 이동하는 방법을 제안 해주십시오.

미리 감사드립니다.

+0

명료성을 위해 몇 가지 예제 데이터를 공유합니다 (이들은 추측 할 수있는 json입니다). 그리고 귀하의 계획은 무엇입니까? 그렇지 않으면 의견이있을 경우에만 답변을받습니다. – blackSmith

+0

안녕하세요 @blackSmith, 업데이트했습니다. – Saurabh

+0

'사용자 위치 코드'는 몇 개까지 가능합니까? 6E8의 순서로? – blackSmith

답변

1

가장 먼저 필요한 것은 도시 코드로 대체하기 위해 위치 코드 열에 합류하는 것입니다. locationCode-city 수 (맵핑)는 상대적으로 작기 때문에 (~ 400) 맵 측 결합을 수행 할 수 있습니다.

먼저 작업 제출 전에 캐시에 맵핑 파일을 추가하십시오. 하둡 버전 사용에 따라 :

// prior to 2.2.0 
DistributedCache.addCacheFile(new Path(path/cityCode_NameMappings.txt).toUri(), conf); 

//OR 2.2.0 onwards. DistributedCache is deprecated 
job.addCacheFile(new Path(filename).toUri()); 

사용 매퍼의 setup 방법을 검색합니다

Path[] cacheFiles = DistributedCache.getLocalCacheFiles(job); 

// OR 
Path[] cacheFiles = context.getLocalCacheFiles(); 

는, 그 이름하여 파일을 확인을 읽고 정적 HashMap<code,name>에 내용을 넣을 수 있으며 장착하는 데 사용 map 방법으로 실제 트위터 데이터 파일의 수신 라인에있는 코드 가능한 매핑의 수가 상대적으로 적을 때 두 번째 열 (현재 범위를 벗어남)을 대체하는 것과 동일한 전략을 수행 할 수 있습니다.

마지막으로 실제 짹짹의 본문 만 선택하면 정규 표현식과 간단한 문자열 연산으로 충분합니다. 이제 두 가지 옵션을 사용할 수 있습니다 :

  1. 텍스트 추출에는 Reducer 클래스를 사용하십시오. 이 코드 대체 코드 과 트윗 바디 추출은 별도의 추상화로 수행됩니다.

  2. Mapper 자체에서 처리를 수행하고 축소 기의 수를 0으로 설정하십시오. 이 작업은지도 전용 작업이므로 더 빠르다고도 보입니다. 조금 지저분합니다.

선택 사항은 선택 사항입니다. 다시 말하지만, 도시 코드 매핑이 많은 경우에는 축소 형 조인을 할 수밖에 없습니다. 구현하려면 복잡한 이 될 것입니다.

두 번째 생각 : 원시 Lucene 이외의 다른 색인 생성 도구를 자유롭게 선택할 수있는 경우 ElasticSearch (Lucene 기반)를 사용하는 것이 좋습니다. 그런 다음 Hive를 활용하여 참여를하고 Hive-ES 통합을 사용하여 데이터를 색인에로드 할 수 있습니다.그래도 텍스트 프로세싱을해야했습니다 (아마도 하이브 인 Serde가 트릭을 할 수 있습니다).