[HADOOP] PIG의 모든 레코드 집합에 대한 최대 / 최소
HADOOPPIG의 모든 레코드 집합에 대한 최대 / 최소
필자는 파일에서로드하는 일련의 레코드 집합을 가지고 있으며, 필자가해야 할 첫 번째 작업은 열의 최대 값과 최소값을 얻는 것입니다. SQL에서는 다음과 같은 하위 쿼리를 사용하여이 작업을 수행합니다.
select c.state, c.population,
(select max(c.population) from state_info c) as max_pop,
(select min(c.population) from state_info c) as min_pop
from state_info c
나는 PIG에서도 이것을 할 수있는 쉬운 방법이 있어야한다고 생각하지만 그것을 찾는 데 문제가 있습니다. 그것은 최대 및 최소 기능을 가지고 있지만 다음 일을 시도했을 때 작동하지 않았다 :
records=LOAD '/Users/Winter/School/st_incm.txt' AS (state:chararray, population:int);
with_max = FOREACH records GENERATE state, population, MAX(population);
이것은 작동하지 않았다. 나는 행마다 동일한 값을 가진 추가 열을 추가 한 다음 해당 열을 그룹화하는 것이 더 좋습니다. 그런 다음 새 그룹을 최대한 활용하십시오. 이것은 내가 원하는 것을 얻는 복잡한 방식처럼 보입니다. 그래서 누군가가 더 간단한 방법을 알고 있는지 묻습니다.
도움에 미리 감사드립니다.
해결법
-
==============================
1.GROUP ALL을 사용하는 경우 모든 데이터를 함께 그룹화해야하지만 추가 열은 필요하지 않다고 말한 것입니다.
GROUP ALL을 사용하는 경우 모든 데이터를 함께 그룹화해야하지만 추가 열은 필요하지 않다고 말한 것입니다.
돼지
records = LOAD 'states.txt' AS (state:chararray, population:int); records_group = GROUP records ALL; with_max = FOREACH records_group GENERATE FLATTEN(records.(state, population)), MAX(records.population);
입력
CA 10 VA 5 WI 2
산출
(CA,10,10) (VA,5,10) (WI,2,10)
from https://stackoverflow.com/questions/5223475/max-min-for-whole-sets-of-records-in-pig by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하이브 : SELECT AS 및 GROUP BY (0) | 2019.07.12 |
---|---|
[HADOOP] Hbase : Hbase 마스터에 대한 호스트 이름을 지정하는 방법 (0) | 2019.07.12 |
[HADOOP] mapred.reduce.parallel.copies를 조정하는 방법? (0) | 2019.07.12 |
[HADOOP] 손상된 입력 파일에서 hadoop 작업이 실패하는 것을 방지하는 방법 (0) | 2019.07.12 |
[HADOOP] Hadoop Mapreduce 프로그램의 출력을 프로그래밍 방식으로 읽음 (0) | 2019.07.12 |