[HADOOP] 돼지 라틴어 줄에 JSON 배열에 파일을로드하는 방법
HADOOP돼지 라틴어 줄에 JSON 배열에 파일을로드하는 방법
기존 스크립트는, 예를 들어, 한 줄에 JSON 객체의 배열로 텍스트 파일을 생성
[{"foo":1,"bar":2},{"foo":3,"bar":4}]
[{"foo":5,"bar":6},{"foo":7,"bar":8},{"foo":9,"bar":0}]
…
나는 배열을 폭발하고 각 개별 객체를 처리하고, 돼지에서이 데이터를로드하고 싶습니다.
나는 아무 소용 트위터의 코끼리 새의 JsonLoader를 사용하여 살펴 보았다. 그것은 JSON에 대해 불평하지 않습니다,하지만 난 다음 실행 "성공적으로 0 기록을 읽기"얻을 :
register '/tmp/elephant-bird/core/target/elephant-bird-core-4.3-SNAPSHOT.jar';
register '/tmp/elephant-bird/hadoop-compat/target/elephant-bird-hadoop-compat-4.3-SNAPSHOT.jar';
register '/tmp/elephant-bird/pig/target/elephant-bird-pig-4.3-SNAPSHOT.jar';
register '/usr/local/lib/json-simple-1.1.1.jar';
a = load '/path/to/file.json' using com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad=true');
dump a;
또한 각 라인을 치료, 정상으로 파일을로드 시도 JSON으로,하지만 트릭을 할 것으로 보이는 기존 UDF를 찾을 수 없다는 분석하려고 다음 하나의 열 chararray을 포함하고.
어떤 아이디어?
해결법
-
==============================
1.도널드 말했듯이, 당신은 여기에 UDF를 사용해야합니다. 여기 Xplenty에서 우리는 ElephantBird의 JsonStringToMap을 보완하기 위해 JsonStringToBag을 썼다.
도널드 말했듯이, 당신은 여기에 UDF를 사용해야합니다. 여기 Xplenty에서 우리는 ElephantBird의 JsonStringToMap을 보완하기 위해 JsonStringToBag을 썼다.
from https://stackoverflow.com/questions/19863628/how-to-load-a-file-with-a-json-array-per-line-in-pig-latin by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] oraoop와 오라클 데이터 가져 오기를위한 하둡과 Sqoop을 통합 (0) | 2019.10.07 |
---|---|
[HADOOP] 간단한 하이브 쿼리가 비어 있습니다 (0) | 2019.10.07 |
[HADOOP] 임시 HDFS 디렉토리에 대한 권한을 변경하는 방법 (0) | 2019.10.07 |
[HADOOP] 돼지 UDF java.lang.NoClassDefFoundError가 함께 AWS EMR에서 실행 : 조직 / 아파치 / 돼지 / LoadFunc을 (0) | 2019.10.07 |
[HADOOP] 하둡 맵리 듀스는 NoSuchElementException (0) | 2019.10.07 |