[HADOOP] 돼지에 Raw JSON로드하기
HADOOP돼지에 Raw JSON로드하기
나는 각 줄이 JSON 객체 인 파일을 가지고있다. (실제로는 stackoverflow의 덤프이다.) 가능한 한 쉽게 Apache Pig에로드하고 싶지만 Pig에게 입력 형식이 무엇인지 알려면 알아 내는데 어려움이 있습니다. 다음은 항목의 예입니다.
{
"_id" : { "$oid" : "506492073401d91fa7fdffbe" },
"Body" : "....",
"ViewCount" : 7351,
"LastEditorDisplayName" : "Rich B",
"Title" : ".....",
"LastEditorUserId" : 140328,
"LastActivityDate" : { "$date" : 1314819738077 },
"LastEditDate" : { "$date" : 1313882544213 },
"AnswerCount" : 12, "CommentCount" : 19,
"AcceptedAnswerId" : 7,
"Score" : 83,
"PostTypeId" : "question",
"OwnerUserId" : 8,
"Tags" : [ "c#", "winforms" ],
"CreationDate" : { "$date" : 1217540572667 },
"FavoriteCount" : 13, "Id" : 4,
"ForumName" : "stackoverflow.com"
}
스키마를 직접 지정하지 않고도 각 행이 위의 중 하나 인 파일을로드 할 수있는 방법이 있습니까? 아니면 모든 객체에서 관측 된 (가능하게는 중첩 된) 키를 기반으로 스키마를 자동으로 생성하는 방법일까요? 스키마를 직접 지정해야하는 경우 스키마 문자열은 어떤 모양입니까?
감사!
해결법
-
==============================
1.빠르고 쉬운 방법 : Twitter의 elephantbird 프로젝트를 사용하십시오. 내부에는 com.twitter.elephantbird.pig.load.JsonLoader라는 로더가 있습니다. 이렇게 직접 사용될 때,
빠르고 쉬운 방법 : Twitter의 elephantbird 프로젝트를 사용하십시오. 내부에는 com.twitter.elephantbird.pig.load.JsonLoader라는 로더가 있습니다. 이렇게 직접 사용될 때,
A = LOAD '/path/to/data.json' USING com.twitter.elephantbird.pig.load.JsonLoader() as (json:map[]); B = FOREACH A GENERATE json#'fieldName' AS field_name;
중첩 된 요소는로드되지 않습니다. 그러나, (원하는 경우)이를 다음과 같이 변경하여 쉽게 수정할 수 있습니다.
A = LOAD '/path/to/data.json' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad')
elephantbird를 포함하는 것은 쉽습니다. Maven (또는 동급의) 종속성 관리자를 사용하여 조직 "com.twitter.elephantbird"로 프로젝트 "elephant-bird"를 당긴 다음 돼지에서 일반적인 등록 명령을 발행합니다
register 'lib/elephantbird.jar';
from https://stackoverflow.com/questions/12644392/loading-raw-json-into-pig by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 웹 응용 프로그램 백엔드로서의 HBase (0) | 2019.07.23 |
---|---|
[HADOOP] 아파치 스파크가 YARN 오류에서 스파크 셸 실행 (0) | 2019.07.23 |
[HADOOP] 하이브에 사용 가능한 데이터 시각화 도구 (0) | 2019.07.23 |
[HADOOP] 출력 쓰기시 Hadoop지도 축소 작업이 실패합니다. (0) | 2019.07.23 |
[HADOOP] Coprocesor HBase를 사용하여 보조 색인 만들기 (0) | 2019.07.23 |