2011-07-06 7 views
3

나는 프레임 워크를 감소시키는 hadoop 맵을 처음 사용하고 있으며, 데이터를 구문 분석하기 위해 hadoop map reduce를 사용하려고합니다. 나는 그 파일들을 파싱하고 하이브 데이터웨어 하우스에로드하기 위해 맵 축소 작업을 작성하려고 생각하고있는 수천 개의 큰 구분 파일을 가지고있다. 나는 그 파일들을 파싱 할 수있는 perl에 파서를 작성했다. 하지만 하둡 맵 축소로 같은 일을하는 데 붙어 있습니다.Hive/Hadoop에서 구문 분석 및로드

예를 들면 : x = ay = bz = c ..... x = py = qz = s .....와 같은 파일이 있습니다. x = 1 z = 2 .... 등등

이제이 파일을 하이브 테이블의 열 (x, y, z)로로드해야하지만 진행할 수없는 것으로 나타났습니다. 그것으로. 이것에 대한 지침은 정말 도움이 될 것입니다.

또 다른 문제는 필드 y가없는 파일이 있다는 것입니다. 지도 감축 작업에 그 조건을 포함시켜야합니다. 지금까지 streaming.jar을 사용하고 내 parser.pl을 매퍼로 입력하여 jar 파일에 입력 해 보았습니다. 나는 그것을 할 수있는 방법이 아닌 것 같아. :)하지만 그게 효과가 있다면 그냥 시도했다. 또한, 하이브의로드 기능을 사용하여 생각했지만 하이브 테이블에 regexserde를 지정하면 누락 된 열이 문제를 일으킬 수 있습니다.

중 하나가 내가 감사 :)

감사합니다 것이 나를 인도 할 수 있다면 나는 지금이 손실하고는, 아툴

+0

나는 또한 똑같은 일을하고 싶다. 어떤 제안이 도움이 될 것이며 또한 파일의 한 줄에 x, y, z 클럽 활동에 대해 어떻게 생각하십니까? 예를 들어, 파일의 한 줄에 b c d a b d a b c가 있으면 하이브 창고에 x, y, z 아래에 a, b, c (2 번)를 추가하고 싶습니다. –

답변

6

나는 얼마 전에 내 블로그에 얼마 전에 뭔가를 기록했다. (구글 "하이브 parse_url"은 몇 안되는 상단에 위치해야합니다.)

URL을 파싱했는데이 경우 str_to_map을 사용하려고합니다. str_to_map (ARG1, ARG2,에서 arg3) ARG1 => 처리 할 문자열 ARG2 => 키 값 쌍 분리 에서 arg3 => 키 값 구분

str = "a=1 b=42 x=abc" 

str_to_map(str," ","=") 

str_to_map의 결과는 당신에게 3 키 값의지도를 줄 것이다 한 쌍. 가

str_to_map (STR, "", "=")의 "가"] 1 반환 "

"

str_to_map을 (STR, "", "=") "B"] 반환 "42"

INSERT OVERWRITE TABLE new_table_with_cols_x_y_z 
(select params["x"], params["y"], params["z"] from 
(select str_to_map(raw_line," ","=") as params from data) raw_line_from_data) final_data 
+0

Amazon의 Elastic Map Reduce에 해당하는 "str_to_map"이 있다면 누구든지 알고 있습니까? "str_to_map"은 정의 된 함수가 아닙니다. – misterbee

+0

AWS Athena에서도 str_to_map이 누락되었습니다. –