테이블을 참조하지 않고 하이브 기능을 어떻게 테스트 할 수 있습니까?

StackOverflow https://stackoverflow.com//questions/21008398

  •  21-12-2019
  •  | 
  •  

문제

UDF WeekoFyear를 이해하고 싶었고 첫 번째 주를 어떻게 시작 하는지를 원했습니다.나는 테이블과 달리기를 가라 앉아야했다 쿼리.나는 테이블을 누르지 않고 값을 계산하고 싶었다.둘째, UDF 소스 코드를 볼 수 있습니까?

SELECT weekofyear
('12-31-2013')
from a;
.

도움이 되었습니까?

해결책

하이브 0.13.0 이후 UDF를 테스트 할 테이블이 필요하지 않습니다.

이 jira : hive-178 from을 선택하지 않아도 한 행 테이블을 가정해야합니다열 없음

테스트 :

hive> SELECT weekofyear('12-31-2013');
.

결과 :

OK
1
Time taken: 0.912 seconds, Fetched: 1 row(s)
.

소스 코드 (마스터 브랜치)는 여기에 있습니다 : udfweekofyear.java

다른 팁

Java Developer 인 경우 JUnit 테스트 케이스를 작성하고 UDF를 테스트 할 수 있습니다.

grepcode 의 함수가 내장 된 모든 하이브의 소스 코드를 검색 할 수 있습니다.

http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hive/hive-exec/1.0.0/org/apache/hadoop/하이브 / QL / UDF / UDFWEEKOFYEAR.JAVA

나는 하이브에서 테이블을 타격하지 않고 UDF를 실행할 것이라고 생각하지 않는다. 하이브 개발자조차도 테이블 UDF 테스트에서.

쿼리를 더 빨리 실행하려면 다음을 수행하십시오.

  1. 하나의 행만으로 테이블을 생성 하고이 테이블에서 UDF 쿼리를 실행합니다
  2. 로컬 모드에서 하이브를 실행하십시오.
  3. 하이브 소스 코드는 여기 입니다. UDFWeekOfYear 소스는 여기 .

적어도 하나의 행을 사용하여 테스트 함수를 테스트 할 수 있어야합니다. 다음은 작업을 수행하고 문자열 결과를 출력하는 몇 가지 사용자 정의 함수를 사용하는 예입니다.

테이블을 실제 테이블로 대체하십시오.

ST_ASTEXT (ST_INTERSECTION (ST_INTERSECTIECTION (ST_INTERSECTIECTIECTION (2,0, 2,3, 3,0), ST_Polygon (1,1,4,1,4,4, 1,4)))에서 anytable 한도 1;

Hive Resuluts :

확인

다각형 ((2 1, 2.66666666666666666666665 1, 2 3, 2 1))

시간 촬영 : 0.191 초, 페치 : 1 행 (s)

하이브>

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top