복붙노트

[HADOOP] -hivevar와 -hiveconf의 차이점은 무엇입니까?

HADOOP

-hivevar와 -hiveconf의 차이점은 무엇입니까?

하이브에서 - h :

--hiveconf <property=value>   Use value for given property
--hivevar <key=value>         Variable subsitution to apply to hive
                                  commands. e.g. --hivevar A=B

해결법

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

    1.나는 문서의 예제가 적절하다고 느끼지 못했기 때문에 여기에 답을하려고 시도했다.

    나는 문서의 예제가 적절하다고 느끼지 못했기 때문에 여기에 답을하려고 시도했다.

    처음에는 오직 --hiveconf 만 있었고 변수 치환은 존재하지 않았습니다.

    --hiveconf 옵션을 사용하면 명령 줄에서 하이브 구성 값을 설정할 수있었습니다. 모든 하이브 구성 값은 hiveconf 네임 스페이스 아래에 저장됩니다 (예 : hiveconf : mapred.reduce.tasks). 이 값을 사용하면 상태 메시지를 표시해야하는 경우와 오류가 발생해도 스크립트를 계속 진행해야하는 경우 매퍼 및 축소 기의 수를 제어 할 수 있습니다.

    나중에 변수 대체가 추가되었습니다. 이것은 이제 $ {...} 구문을 사용하여 쿼리에서 변수를 사용할 수 있음을 의미합니다. 그러나 명령 줄에서 설정할 수있는 유일한 변수는 - hiveconf를 사용하는 hiveconf 네임 스페이스 아래에 있으므로 사용자가 변수를 저장하는 곳입니다.

    하이브 구성 네임 스페이스 아래에 개인 변수를 넣으면 아무 것도 해 내지 못하지만 좋은 형식이 아닙니다. 나중에 --hivevar를 사용하여 명령 줄에서 정의 할 수있는 사용자 변수에 대해 특별히 hivevar 네임 스페이스를 추가하는 것이 좋습니다. 이것은 Hive 구성 값과 사용자 정의 변수 사이의 명확한 구분을 의미합니다.

    요약하자면: 하이브 구성 네임 스페이스와 --hiveconf를 사용하여 하이브 구성 값을 설정해야합니다. 사용자 변수를 정의하려면 hivevar 네임 스페이스와 --hivevar를 사용해야합니다. hiveconf 네임 스페이스 아래에 사용자 변수를 설정하면 아무 것도 해 내지 못하지만 권장하지는 않습니다.

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

    2.@Llama는 두 가지 유형의 변수가 다르게 액세스되는 것과 함께 상세히 설명했습니다.

    @Llama는 두 가지 유형의 변수가 다르게 액세스되는 것과 함께 상세히 설명했습니다.

    --hivevar 변수는 $ {var-name}을 사용하여 액세스되며, --hiveconf는 하이브 내부의 $ {hiveconf : var-name}에 액세스됩니다.

    예 : 아래 예제에서는 변수에 액세스하여 하이브에 값을 인쇄합니다.

    하이 위버 :

    hive --hivevar a='this is a' -e '!echo ${a};'
    

    출력 : 이것은

    hiveconf :

    hive --hiveconf a='this is a' -e '!echo ${hiveconf:a};'
    

    출력 : 이것은

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

    3.네임 스페이스를 제외하고는 차이가 없습니다. hiveconf와 hivevar는 다른 네임 스페이스입니다. hivevar 네임 스페이스가 구성 속성 네임 스페이스와 하이브 변수 네임 스페이스를 구분하기 위해 추가되었습니다. 자세한 내용은 https://issues.apache.org/jira/browse/HIVE-2020을 참조하십시오.

    네임 스페이스를 제외하고는 차이가 없습니다. hiveconf와 hivevar는 다른 네임 스페이스입니다. hivevar 네임 스페이스가 구성 속성 네임 스페이스와 하이브 변수 네임 스페이스를 구분하기 위해 추가되었습니다. 자세한 내용은 https://issues.apache.org/jira/browse/HIVE-2020을 참조하십시오.

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

    4.당신은이 차이를 참조 할 수 있습니다.

    당신은이 차이를 참조 할 수 있습니다.

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+VariableSubstitution

    변수에 대한 세 가지 네임 스페이스 - hiveconf, system 및 env가 있습니다. (하이브 0.8.0 이후 버전에서는 define 또는 hivevar 옵션을 사용하여 별도의 네임 스페이스에 사용자 지정 변수를 만들 수도 있습니다.)

  5. ==============================

    5.또한 스크립트의 시작 부분에서 다음과 같이 사용할 수 있습니다.

    또한 스크립트의 시작 부분에서 다음과 같이 사용할 수 있습니다.

    hiveconf :

    SET this_dt = CURRENT_DATE;
    select ${hiveconf:this_dt};
    

    하이 위버 :

    set hivevar:cur_dt=current_date;
    select ${hivevar:cur_dt};
    
  6. from https://stackoverflow.com/questions/37997008/what-is-the-difference-between-hivevar-and-hiveconf by cc-by-sa and MIT license