복붙노트

[HADOOP] 돼지 라틴어를 사용하여 열을 "업데이트하는 방법"

HADOOP

돼지 라틴어를 사용하여 열을 "업데이트하는 방법"

내가 다음 표를 사용할 수 있다고 상상해보십시오.

A: { x: int, y: int, z: int, ...99 other columns... }

이제는 z를 NULL로 설정하여 x> y로 설정하고 결과 데이터 집합을 B로 저장하도록 변환하려고합니다.

다른 열을 명시 적으로 언급하지 않고도이 작업을 수행하려고합니다. 유지 관리의 악몽이됩니다.

간단한 해결책이 있습니까?

해결법

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

    1.이 문제는이 JIRA에서 추적됩니다 : PIG-1693 foreach에는 "모든 나머지 필드"를 나타내는 방법이 필요합니다.

    이 문제는이 JIRA에서 추적됩니다 : PIG-1693 foreach에는 "모든 나머지 필드"를 나타내는 방법이 필요합니다.

    현재 나는 당신이 말하는 것을하거나 Z를 로딩하지 않고 별 표현으로 새로운 열 Z를 추가하는 것보다 더 간단한 것을 모른다.

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

    2.나는 한 줄짜리 봉지로 둥지를 틀고 나중에 평평하게하여 부풀기의 일부를 떨어 뜨릴 수있었습니다.

    나는 한 줄짜리 봉지로 둥지를 틀고 나중에 평평하게하여 부풀기의 일부를 떨어 뜨릴 수있었습니다.

    그래도 약간의 해킹이 느껴집니다. 그래서 나는 그것이 시나리오에 더 적합한지를보기 위해 계단식을 조사하고있다.

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

    3.귀하의 시나리오를 용이하게하는 기능이 Pig 0.9에 추가되었습니다. 새로운 프로젝트 범위 연산자 (..)를 사용하면 다음 예제와 같이 시작 및 / 또는 끝 필드 이름을 지정하여 다양한 필드를 나타낼 수 있습니다.

    귀하의 시나리오를 용이하게하는 기능이 Pig 0.9에 추가되었습니다. 새로운 프로젝트 범위 연산자 (..)를 사용하면 다음 예제와 같이 시작 및 / 또는 끝 필드 이름을 지정하여 다양한 필드를 나타낼 수 있습니다.

    결과 = FOREACH someInput GENERATE field1, field2, null을 field3, field4 ..로;

    위의 예에서 필드 1 / 2 / 3 / 4는 실제 필드 이름입니다. 필드 중 하나는 null로 설정되고 다른 필드는 그대로 유지됩니다.

    이 "새로운 Apache Pig 0.9 기능 - 제 3 부"기사에 대한 자세한 내용 : http://hortonworks.com/blog/new-apache-pig-0-9-features-part-3-additional-features/

    특정 문제를 해결하려면 결과를 결합하기 위해 FILTER와 UNION을 원할 것입니다.

  4. ==============================

    4.물론 열 번호로 열을 선택할 수는 있지만 아무것도 변경하면 쉽게 악몽이 될 수 있습니다. 컬럼 이름이 훨씬 안정적이라는 것을 알았 기 때문에 다음 해결책을 권장합니다.

    물론 열 번호로 열을 선택할 수는 있지만 아무것도 변경하면 쉽게 악몽이 될 수 있습니다. 컬럼 이름이 훨씬 안정적이라는 것을 알았 기 때문에 다음 해결책을 권장합니다.

    ..를 사용하여 선행 또는 후행 열 (또는 열 사이)을 나타낼 수 있습니다. 'MyCol'의 값을 'updatedvalue'로 변경하려면이 방법이 효과가 있습니다.

    aliasAfter = FOREACH aliasBefore GENERATE 
                 .. colBeforeMyCol, updatedvalue, colAfterMyCol ..;
    
  5. from https://stackoverflow.com/questions/4682912/how-to-update-a-column-using-pig-latin by cc-by-sa and MIT license