[HADOOP] Pig에서 여러 맵의 튜플을 다른 행으로 분할하는 방법
HADOOPPig에서 여러 맵의 튜플을 다른 행으로 분할하는 방법
나는 Pig에서 다음과 같은 관계가 있습니다.
([account_id#100,
timestamp#1434,
id#900],
[account_id#100,
timestamp#1434,
id#901],
[account_id#100,
timestamp#1434,
id#902])
보시다시피, 튜플 내에 세 개의 맵 객체가 있습니다. 위의 모든 데이터는 관계에서 $ 0 '필드 내에 있습니다. 따라서 위의 데이터는 단일 바이트 배열 열과 관련이 있습니다.
데이터는 다음과 같이로드됩니다.
data = load 's3://data/data' using com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad');
DESCRIBE data;
data: {bytearray}
출력이 다음과 같이되도록이 데이터 구조를 3 개의 행으로 어떻게 분할합니까?
data: {account_id:chararray, timestamp:chararray, id:int}
(100, 1434,900)
(100, 1434,901)
(100, 1434,902)
해결법
-
==============================
1.샘플 입력 데이터가 없으면 문제를 추측하기가 매우 어렵습니다. 이것이 중간 결과 인 경우, STORE를 사용하여 출력하고 출력 파일을 입력 할 수있는 것으로 입력하십시오. STRSPLIT를 사용 하여이 문제를 해결할 수 있었지만 입력이 단일 열과 단일 행인지 또는 동일한 열을 가진 세 개의 다른 행인지 확실하지 않습니다.
샘플 입력 데이터가 없으면 문제를 추측하기가 매우 어렵습니다. 이것이 중간 결과 인 경우, STORE를 사용하여 출력하고 출력 파일을 입력 할 수있는 것으로 입력하십시오. STRSPLIT를 사용 하여이 문제를 해결할 수 있었지만 입력이 단일 열과 단일 행인지 또는 동일한 열을 가진 세 개의 다른 행인지 확실하지 않습니다.
두 경우 모두 FLATTEN 연산자를 사용하고 나중에 STRSPLIT을 사용하여 데이터를 병합하면 도움이됩니다. 문제에 대한 자세한 정보와 입력 데이터를 얻으면 실례를들 수 있습니다.
Data -> FLATTEN to get out of bag -> STRSPLIT over "," in a FOREACH,GENERATE
from https://stackoverflow.com/questions/26043445/how-do-i-split-in-pig-a-tuple-of-many-maps-into-different-rows by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 기본 디렉토리가 변경 될 때 Hive 테이블이 자동으로 업데이트 될 수 있습니까 (0) | 2019.09.09 |
---|---|
[HADOOP] HBase 단일 행 트랜잭션 지원에서의 행 잠금 (0) | 2019.09.09 |
[HADOOP] Windows 10에서 스파크 마스터를 시작하지 못했습니다. (0) | 2019.09.09 |
[HADOOP] 돼지를 사용하여 hdfs에서 트위터 데이터를로드하는 방법? (0) | 2019.09.09 |
[HADOOP] JAVA를 사용하여 HDFS에서 로컬 파일 시스템으로 파일 복사 (0) | 2019.09.09 |