복붙노트

[HADOOP] 쿼리 결과를 변수에 저장

HADOOP

쿼리 결과를 변수에 저장

결과를 변수에 저장하고 싶은 쿼리가 있습니다. 내가 어떻게 해 ? 나는 노력했다.

./hive -e  "use telecom;insert overwrite local directory '/tmp/result' select
avg(a) from abc;"

./hive --hiveconf MY_VAR =`cat /tmp/result/000000_0`;

MY_VAR에서 평균값을 얻을 수 있지만 하이브 CLI에서는 필요하지 않습니다. 하이브 CLI 내부에서 유닉스 명령에 접근 할 수있는 방법이 있습니까?

해결법

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

    1.유즈 케이스 : mysql에서 다음이 유효합니다.

    유즈 케이스 : mysql에서 다음이 유효합니다.

    이것은 변수가 호출 될 때마다가 아니라 최대 날짜 쿼리를 한 번만 실행하면되므로이 변수를 반복적으로 호출해야하는 스크립트에 유용합니다.

    HIVE는 현재이 기능을 지원하지 않습니다. (내가 틀렸다면 나에게 정정 해주세요! 나는 오후 내내이 모든 일을하는 법을 알아 내려고 노력해 왔습니다)

    내 해결 방법은 사용되는 쿼리에 조인을 매핑하기에 충분히 작은 테이블에 필요한 변수를 저장하는 것입니다. 조인은 브로드 캐스트 조인이 아닌 맵이므로 성능을 크게 손상시키지 않습니다. 예 :

    @visakh의 제안 된 솔루션은 'select count (1) from table_name;'문자열을 저장하기 때문에 최적이 아닙니다. 반환 된 값보다는 오히려 스크립트에서 var를 반복적으로 호출해야하는 경우에는 도움이되지 않습니다.

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

    2.하이브 쿼리 출력을 변수에 저장하고 다른 쿼리에서 사용합니다.

    하이브 쿼리 출력을 변수에 저장하고 다른 쿼리에서 사용합니다.

    셸에서 다음을 수행하여 원하는 값으로 변수를 만듭니다.

    var=`hive -S -e "select max(datekey) from ....;"`
    echo $var
    

    다음 하이브 쿼리에서 변수 값을 사용하십시오.

    hive -hiveconf MID_DATE=$var -f test.hql
    
  3. ==============================

    3.당신은 BeeTamer를 사용할 수 있습니다. 결과 (또는 그 일부)를 변수에 저장하고 나중에이 변수를 코드에서 사용할 수 있습니다.

    당신은 BeeTamer를 사용할 수 있습니다. 결과 (또는 그 일부)를 변수에 저장하고 나중에이 변수를 코드에서 사용할 수 있습니다.

    Beetamer는 Apache Hive 및 Cloudera Impala 엔진의 기능을 확장 할 수있는 매크로 언어 / 매크로 프로세서입니다.

    select avg(a) from abc;
    %capture MY_AVERAGE;
    select * from abc2 where avg_var=#MY_AVERAGE#;
    

    여기서 매크로 변수 MY_AVERAGE에 대한 쿼리의 평균값을 저장 한 다음 두 번째 쿼리에서 다시 사용합니다.

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

    4.쉘 스크립트를 사용하면이 작업을 간단히 수행 할 수 있습니다.

    쉘 스크립트를 사용하면이 작업을 간단히 수행 할 수 있습니다.

    쉘 스크립트 만들기 파일 : avg_op.sh

    #!/bin/sh
    hive -e 'use telecom;select avg(a) from abc;' > avg.txt
    wait
    value=`cat avg.txt`
    hive --hiveconf avgval=$value -e "set avgval;set hiveconf:avgval;
    use telecom;
    select * from abc2 where avg_var=\${hiveconf:avgval};"
    

    .sh 파일을 실행하십시오.

    >bash avg_op.sh
    
  5. ==============================

    5.아래에서 시도하십시오.

    아래에서 시도하십시오.

    $ var = $ (하이브 -e "선택 '12'")

    $ echo $ var

    12 - 출력

  6. from https://stackoverflow.com/questions/23988960/storing-query-result-in-a-variable by cc-by-sa and MIT license