[HADOOP] 하이브 udf에서 하이브 conf 변수를 전달하는 방법은 무엇입니까?
HADOOP하이브 udf에서 하이브 conf 변수를 전달하는 방법은 무엇입니까?
하이브 구성 변수를 하이브 UDF에 전달하려고합니다.
아래는 코드 스 니펫입니다.
hive -f ../hive/testHive.sql -hivevar testArg=${testArg}
아래는 하이브 UDF 호출입니다.
select setUserDefinedValueForColumn(columnName,'${testArg}') from testTable;
udf에서 나는 testArg의 값을 null로 얻는다.
udf에서 하이브 conf 변수를 사용하는 방법과 하이브 UDF에서 하이브 구성에 액세스하는 방법을 알려주십시오.
해결법
-
==============================
1.나는 아래 명령을 사용하여 하이브 변수를 'hiveconf'로 전달해야한다고 생각한다.
나는 아래 명령을 사용하여 하이브 변수를 'hiveconf'로 전달해야한다고 생각한다.
hive --hiveconf testArg="my test args" -f ../hive/testHive.sql
그런 다음 GenericUDF evaluate () 메소드 내에서 코드 아래에있을 수 있습니다.
@Override public Object evaluate(DeferredObject[] args) throws HiveException { String myconf; SessionState ss = SessionState.get(); if (ss != null) { HiveConf conf = ss.getConf(); myconf= conf.get("testArg"); System.out.println("sysout.myconf:"+ myconf); } }
이 코드는 하이브 1.2에서 테스트되었습니다.
-
==============================
2.뷰 생성 중에 Hive가 변수의 값을 정확하게 취하므로 뷰가 정적이 될 수 있으므로 뷰 코드에서 $ {hiveconf : testArg}를 사용하여 뷰에 하이브 변수를 직접 전달할 수 없습니다.
뷰 생성 중에 Hive가 변수의 값을 정확하게 취하므로 뷰가 정적이 될 수 있으므로 뷰 코드에서 $ {hiveconf : testArg}를 사용하여 뷰에 하이브 변수를 직접 전달할 수 없습니다.
유일한 기회는 UDF를 사용하여 하이브 변수에 액세스하는 것입니다.
GenericUDF를 사용할 수 있습니다. MapRequest에는, MapReadContext를 파라미터로서 취하는 메소드가 있습니다. 따라서 다음과 같이 GenericUDF에서 configure 메소드를 지정해야합니다.
public void configure(MapredContext context){ yourVar = context.getJobConf().get("hive_variable"); }
이것은 MapRedTask의 런타임에만 호출됩니다.
from https://stackoverflow.com/questions/23995290/how-to-pass-hive-conf-variable-in-hive-udf by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop Reducer : 어떻게 투기 실행을 사용하여 여러 디렉토리로 출력 할 수 있습니까? (0) | 2019.06.30 |
---|---|
[HADOOP] impala 및 hbase에 연결하는 중 Kerberos 오류가 발생했습니다. (0) | 2019.06.30 |
[HADOOP] 감속기의 다중 출력 (0) | 2019.06.30 |
[HADOOP] 원사 : yarn-site.xml 변경 사항이 적용되지 않습니다. (0) | 2019.06.30 |
[HADOOP] Scalding에서 버켓 출력 방법 (0) | 2019.06.30 |