Hive 에서 UDF 사용

UDF (User - Defined Function) 는 Hive 자체 함수 에 대한 보충 이 고 hql 의 역할 범 위 를 크게 확대 하여 코드 를 더욱 간결 하 게 할 뿐만 아니 라 중복 작업 도 많이 줄 이 고 임무 수행 효율 도 높 였 다.
도구 다운로드
http://download.csdn.net/detail/arthas917/9275563
도구 역할
  • udf. Rank 이 함 수 는 그룹 limit 출력 에 사 용 됩 니 다. 예 를 들 어 "각 사용자 의 앞 100 개의 언어 자 료 를 끌 어 옵 니 다" 는 사용자 cuid 를 그룹 으로 나 눈 후 각 그룹의 앞 100 개의 언어 자 료 를 각각 추출 해 야 합 니 다. 이 함수 원 리 는 지정 한 열의 값 (예 를 들 어 cuid) 에 따라각 줄 에 번 호 를 추가 하고 지정 한 열의 값 이 변 할 때 다시 0 부터 번 호 를 매 깁 니 다. 이 방식 을 이용 하면 cluster by cuid 를 사용 한 후 이 함수 번 호 를 사용 하여 새 열 을 얻 을 수 있 습 니 다. where 조건 에서 번호 값 이 100 이하 인 줄 을 걸 러 내 면 각 그룹의 100 개의 기록 을 얻 을 수 있 습 니 다. 이 udf 는 하나의 매개 변수 만 있 고 매개 변수 값 은 지정 한 그룹 근거 (예 를 들 어 cuid) 입 니 다.
  • udf. concat 이 함 수 는 여러 줄 을 통합 하 는 데 사 용 됩 니 다. 예 를 들 어 "사용자 가 여러 날 동안 의 방문 기록 을 가 져 오고 이 기록 을 사용 합 니 다" | "분할"사용자 의 매일 기록 을 모두 추출 한 후 여러 줄 의 값 을 한 줄 에 연결 해 야 합 니 다. 현재 hive 자체 연결 함수 에는 concat 가 있 습 니 다. 두 열 을 한 열 로 합 치 는 역할 을 하지만, 여러 줄 의 값 을 한 줄 에 합 치 려 면 udf 를 사용 해 야 합 니 다. 이 udf 는 두 개의 매개 변수 가 있 습 니 다. 첫 번 째 매개 변 수 는 합 쳐 야 할 열 이름 이 고, 두 번 째 매개 변 수 는 지정 한 구분자 기호 입 니 다.。

  • 호출 방식
    그룹 제한 출력
  • tools. jar 를 작업 디 렉 터 리 로 복사
  • hql 시작 부분 에 다음 과 같은 내용 을 추가 합 니 다. ADD jar tools. jar; create temporary function rankCol as' udf. Rank '; 설명:
  • "ADD jar tools. jar" 는 도 구 를 HDFS 디 렉 터 리 에 업로드 하 는 것 을 표시 합 니 다.
  • "create temporary function rankCol as" udf. Rank "은 rankCol 이 라 고 하 는 사용자 정의 함 수 를 만 들 었 습 니 다. 함수 위 치 는 tools. jar 공구 꾸러미 에 있 는 udf. Rank - udf 는 가방 이름 이 고 Rank 은 클래스 이름
  • 입 니 다.
  • hql 구문 에서 호출:
    select userid,log from (
    select userid,log,rankCol(userid) as colid  from 
    (select userid,log from testLog cluster by userid) tmpin
     ) tmpout 
    where colid<100;
    
    이상 은 testLog 에서 userid 에 따라 모든 사용자 의 100 개 기록
  • 을 가 져 오 는 것 을 나타 낸다.
    여러 줄 병합
  • tools. jar 를 작업 디 렉 터 리 로 복사
  • hql 시작 에 다음 과 같은 내용 을 추가 합 니 다. ADD jar tools. jar; create temporary function concatTag as' udf. concat '; 설명:
  • "ADD jar tools. jar" 는 도 구 를 HDFS 디 렉 터 리 에 업로드 하 는 것 을 표시 합 니 다.
  • "create temporary function concatTag as' udf. concat '" 는 concatTag 라 는 사용자 정의 함 수 를 만 들 었 습 니 다. 함수 위 치 는 tools. jar 공구 꾸러미 에 있 는 udf. concat - udf 는 가방 이름 이 고 concat 는 클래스 이름
  • 입 니 다.
  • hql 구문 에서 호출:
    SELECT userid,city,concatTag(tags,'|') as totalTags FROM(
    SELECT userid,city,tags FROM
    userTags
    ) tmp
    GROUP BY userid,city;
    
    이상 은 userTags 표 에서 사용자 가 각 도시 에서 의 방문 기록 을 가 져 오고 '|' 로 연결 하여 사용자 userid 로 출력 합 니 다.
  • 좋은 웹페이지 즐겨찾기