복붙노트

[HADOOP] PIG에서 생성 된 bag (크기가 다를 수 있음)에서 첫 번째 튜플을 어떻게 추출합니까?

HADOOP

PIG에서 생성 된 bag (크기가 다를 수 있음)에서 첫 번째 튜플을 어떻게 추출합니까?

나는 크기 (가방 안의 튜플 수)가 다를 수있는 정보의 '가방'을 생성합니다. 이것으로부터, 나는 첫 번째 요소를 즉석에서 추출하려고합니다. 어떻게해야합니까?

해결법

  1. ==============================

    1.문서에 따르면 가방은 튜플 및

    문서에 따르면 가방은 튜플 및

    하지만 조심해야합니다. $ 0은 가방이 주문되지 않았기 때문에 가방에 첫 번째 튜플을 제공하지 않습니다! 구성 튜플의 첫 번째 요소를 가져옵니다.

    가방을 순서가 지정된 구조로 변환하거나 UDF를 사용해야합니다. 또한이 대답을 받아 들일 수 없으므로 (삭제할 수 있음) 대신 UDF에 대한 링크가있는 Guarev의 동의를 받아야합니다.

  2. ==============================

    2.DataFu UDF 사용 : FirstTupleFromBag (http://datafu.incubator.apache.org/docs/datafu/1.2.0/datafu/pig/bags/FirstTupleFromBag.html)

    DataFu UDF 사용 : FirstTupleFromBag (http://datafu.incubator.apache.org/docs/datafu/1.2.0/datafu/pig/bags/FirstTupleFromBag.html)

  3. ==============================

    3.가방에있는 튜플의 순서가 "첫 번째"것을 얻는 것이 중요하다면 (물론 그렇습니다!) 다음과 같이 할 수 있습니다. 자세한 내용은 https://community.hortonworks.com/에서 설명합니다. 질문 / 22863 / cant-we-filter-the-data-we-have-done-in-37-s.html # 대답 -22995.

    가방에있는 튜플의 순서가 "첫 번째"것을 얻는 것이 중요하다면 (물론 그렇습니다!) 다음과 같이 할 수 있습니다. 자세한 내용은 https://community.hortonworks.com/에서 설명합니다. 질문 / 22863 / cant-we-filter-the-data-we-have-done-in-37-s.html # 대답 -22995.

    max_runs = FOREACH grp_data {
        inner_sorted = ORDER runs BY runs DESC;
        first_row = LIMIT inner_sorted 1;
        GENERATE first_row AS most_hits;
    }
    
  4. from https://stackoverflow.com/questions/11113964/how-do-i-extract-the-first-tuple-from-a-generated-bag-whose-size-might-vary-in by cc-by-sa and MIT license