복붙노트

[HADOOP] 하둡 돼지 : 명령 행 인수 전달하기

HADOOP

하둡 돼지 : 명령 행 인수 전달하기

이것을 할 수있는 방법이 있습니까? 예를 들어 처리 할 파일의 이름을 전달합니까?

해결법

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

    1.이것은 다른 질문에서 나타 났지만 명령 줄에 입력 매개 변수를 표시하고로드 할 때 입력 매개 변수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

    이것은 다른 질문에서 나타 났지만 명령 줄에 입력 매개 변수를 표시하고로드 할 때 입력 매개 변수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

    명령 행 :

    script.pig :

    Amazon Web Services Elastic Map Reduce를 사용하는 경우 '$ input'은 입력 한 내용에 대해 스크립트에 전달되는 내용입니다.

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

    2.당신이 사용할 수있는 ... 1. 매개 변수가 거의없는 경우 -param (-p) 2. 매개 변수가 많은 경우 -param_file (-m)을 사용하십시오.

    당신이 사용할 수있는 ... 1. 매개 변수가 거의없는 경우 -param (-p) 2. 매개 변수가 많은 경우 -param_file (-m)을 사용하십시오.

    명령 줄 인수의 가치에 따라 두 가지 방법 중 하나를 사용할 수 있습니다. 스크립트를 개발하고 테스트 할 때 -param을 사용합니다. 일단 돼지 스크립트가 배치 프로세싱이나 crontab을 실행할 준비가되면, -param_file을 사용하여 필요한 변경이 있으면 params.init 파일을 쉽게 업데이트 할 수 있습니다.

    남자 돼지는 모든 가능한 선택권을 보여줄 것이다.

    -m, -param_file path to the parameter file
    -p, -param key value pair of the form param=val
    

    샘플 코드는 다음과 같습니다.

    001,Rajiv,Reddy,21,9848022337,Hyderabad
    002,siddarth,Battacharya,22,9848022338,Kolkata
    003,Rajesh,Khanna,22,9848022339,Delhi
    004,Preethi,Agarwal,21,9848022330,Pune
    005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar
    006,Archana,Mishra,23,9848022335,Chennai
    007,Komal,Nayak,24,9848022334,trivendram
    008,Bharathi,Nambiayar,24,9848022333,Chennai
    
    fileName='hdfs://horton/user/jgosalia/students.txt'
    cityName='Chennai'
    
    students = LOAD '$fileName' USING PigStorage(',') AS (id:int, firstname:chararray, lastname:chararray, age:int, phone:chararray, city:chararray);
    students = FILTER students BY city == '$cityName';
    DUMP students;
    
    pig -param fileName='hdfs://horton/user/jgosalia/students.txt' -param cityName='Chennai' filter.pig
    
    ... Trimming the logs ...
    
    (6,Archana,Mishra,23,9848022335,Chennai)
    (8,Bharathi,Nambiayar,24,9848022333,Chennai)
    
    pig -param_file params.init filter.pig
    
    ... Trimming the logs ...
    
    (6,Archana,Mishra,23,9848022335,Chennai)
    (8,Bharathi,Nambiayar,24,9848022333,Chennai)
    

    참고 : 파일 경로에 절대 경로를 사용하십시오 (매개 변수로 및 -param_file (-m)에 param 파일 경로를 지정할 때).

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

    3.매개 변수를 PIG 스크립트로 전달하는 것은 간단합니다.

    매개 변수를 PIG 스크립트로 전달하는 것은 간단합니다.

    먼저 돼지에서 $ input_file과 같이 '$'를 사용하여 변수를 표시하십시오. 그런 다음 pig-parameters를 사용하여 스크립트에 매개 변수를 전달하십시오. input_file = '/ path / to / data'

    자세한 내용은 다음을 참조하십시오. http://wiki.apache.org/pig/ParameterSubstitution

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

    4.예.

    예.

    돼지의 param 옵션을 사용하여 명령 행 옵션을 따라 매개 변수를 전달할 수 있습니다.

    --customparam.pig
    --load hdfs/local fs data 
     original = load '$input' using PigStorage('$delimiter');
    --filter a specific field value into another bag  
     filtered = foreach original generate $split; 
    --storing data into hdfs/local fs 
      store filtered into '$output';
    

    자세한 정보는 다음을 확인하십시오.

  5. from https://stackoverflow.com/questions/4166154/hadoop-pig-passing-command-line-arguments by cc-by-sa and MIT license