Hive UDFs

Hive UDFs (사용자 정의 함수)

Hive의 UDF는 Java로 개발해 Apache Hive에 매끄럽게 통합되는 커스텀 함수예요. Hive에는 다양한 내장 UDF가 있어서 그대로 쓸 수 있고, 필요하면 나만의 UDF도 만들 수 있어요. 이 문서는 Hive가 제공하는 내장 함수들을 기능별로 정리한 완전한 레퍼런스예요.

출처: 문서

본문

Hive 사용자 정의 함수(UDF)는 Java로 개발되어 Apache Hive에 매끄럽게 통합되는 커스텀 함수입니다. UDF는 매개변수를 받아 특정 동작을 수행하고 결과 값을 반환하도록 설계된 루틴입니다. 반환 값은 UDF의 코드와 구현된 인터페이스에 따라 단일 스칼라 행이 될 수도 있고 완전한 결과 집합이 될 수도 있습니다. UDF는 커스텀 코드 통합을 가능케 해 고전적인 SQL 기능을 강화하는 강력한 능력으로, Hive 사용자에게 다재다능한 도구 세트를 제공합니다. Apache Hive는 사용자가 활용할 수 있는 다양한 내장 UDF를 갖추고 있습니다. 다른 SQL 기반 솔루션과 유사하게 Hive도 필요에 따라 커스텀 함수를 통합해 이미 풍부한 UDF 세트를 확장하는 기능을 제공합니다.

개요

모든 UDF의 evaluate 메서드는 한 번에 한 행씩 처리됩니다! UDF에 복잡한 코드가 있으면 실행 시간에 성능 문제를 일으킬 수 있습니다.

UDF를 이해하기 위해 실행 패턴을 파악하는 예제부터 시작해 봅시다.

UDF 동작 예

SELECT length(string_col) FROM table_name;

이 경우 내장 UDF length 는 string_col 값의 각 행을 평가합니다.

내장 UDF가 어떻게 동작하는지 봤으니 Apache Hive가 어떤 종류의 내장 UDF를 갖고 있는지 알아봅시다.

팁: 모든 Hive 키워드는 대소문자를 구분하지 않습니다(case-insensitive) . 연산자 및 함수 이름도 마찬가지예요. 즉 lengthLENGTH 모두 Hive가 받아들입니다.

사용 가능한 함수

내장 집계 함수 (UDAF)

Hive 집계 함수(UDAF)는 여러 행을 입력으로 받아 단일 행을 출력으로 반환합니다. 기능에 따라 대부분 값을 집계해 단일 결과를 반환하며, 주로 GROUP BY 문에서 사용됩니다.

이 함수들은 GROUP BY 없이도 사용할 수 있습니다.

반환 타입 이름(시그니처) 설명 소스 코드
bigint count(*) count(expr) count(DISTINCT expr[, expr...]) count(*) - NULL 값을 포함한 검색된 전체 행 수를 반환합니다. count(expr) - 제공된 표현식이 non-NULL인 행 수를 반환합니다. count(DISTINCT expr[, expr]) - 제공된 표현식이 고유하고 non-NULL인 행 수를 반환합니다. 이 실행은 hive.optimize.distinct.rewrite로 최적화할 수 있습니다. GenericUDAFCount
double sum(col), sum(DISTINCT col) 그룹 내 요소의 합 또는 그룹 내 컬럼의 고유 값 합을 반환합니다. GenericUDAFSum
double avg(col), avg(DISTINCT col) 그룹 내 요소의 평균 또는 그룹 내 컬럼의 고유 값 평균을 반환합니다. GenericUDAFAverage
double min(col) 그룹 내 컬럼의 최솟값을 반환합니다. GenericUDAFMin
double max(col) 그룹 내 컬럼의 최댓값을 반환합니다. GenericUDAFMax
double variance(col), var_pop(col) 그룹 내 숫자 컬럼의 분산을 반환합니다. GenericUDAFVariance
double var_samp(col) 그룹 내 숫자 컬럼의 비편향 표본 분산을 반환합니다. GenericUDAFVarianceSample
double stddev_pop(col) 그룹 내 숫자 컬럼의 표준 편차를 반환합니다. GenericUDAFStd
double stddev_samp(col) 그룹 내 숫자 컬럼의 비편향 표본 표준 편차를 반환합니다. GenericUDAFStdSample
double covar_pop(col1, col2) 그룹 내 숫자 컬럼 쌍의 모집단 공분산을 반환합니다. GenericUDAFCovariance
double covar_samp(col1, col2) 그룹 내 숫자 컬럼 쌍의 표본 공분산을 반환합니다. GenericUDAFCovarianceSample
double corr(col1, col2) 그룹 내 숫자 컬럼 쌍의 Pearson 상관 계수를 반환합니다. GenericUDAFCorrelation
double percentile(bigint col, p) 그룹 내 컬럼의 정확한 p번째 백분위수를 반환합니다(부동소수점 타입에서는 동작하지 않음). p는 0과 1 사이여야 합니다. 참고: 실제 백분위수는 정수 값에서만 계산할 수 있습니다. 입력이 정수가 아니면 PERCENTILE_APPROX를 사용하세요. UDAFPercentile
array percentile(bigint col, array(p1 [, p2]...)) 그룹 내 컬럼의 정확한 백분위수 p1, p2, ...를 반환합니다(부동소수점 타입에서는 동작하지 않음). pi는 0과 1 사이여야 합니다. 참고: 실제 백분위수는 정수 값에서만 계산할 수 있습니다. 입력이 정수가 아니면 PERCENTILE_APPROX를 사용하세요.
double percentile_approx(double col, p [, B]) 그룹 내 숫자 컬럼(부동소수점 타입 포함)의 근사 p번째 백분위수를 반환합니다. B 매개변수는 메모리를 희생해 근사 정확도를 제어합니다. 값이 높을수록 더 나은 근사를 제공하며 기본값은 10,000입니다. col의 고유 값 수가 B보다 작으면 정확한 백분위수 값을 제공합니다. GenericUDAFPercentileApprox
array percentile_approx(double col, array(p1 [, p2]...) [, B]) 위와 같지만 단일 값 대신 백분위수 값의 배열을 받고 반환합니다.
double regr_avgx(independent, dependent) avg(dependent)와 동일합니다.
double regr_avgy(independent, dependent) avg(independent)와 동일합니다.
double regr_count(independent, dependent) 선형 회귀선을 피팅하는 데 사용된 non-null 쌍의 개수를 반환합니다.
double regr_intercept(independent, dependent) 선형 회귀선의 y절편을 반환합니다. 즉 dependent = a * independent + b 방정식에서 b 값입니다.
double regr_r2(independent, dependent) 회귀에 대한 결정 계수를 반환합니다.
double regr_slope(independent, dependent) 선형 회귀선의 기울기를 반환합니다. 즉 dependent = a * independent + b 방정식에서 a 값입니다.
double regr_sxx(independent, dependent) regr_count(independent, dependent) * var_pop(dependent)와 동일합니다.
double regr_sxy(independent, dependent) regr_count(independent, dependent) * covar_pop(independent, dependent)와 동일합니다.
double regr_syy(independent, dependent) regr_count(independent, dependent) * var_pop(independent)와 동일합니다.
array <struct {'x','y'}> histogram_numeric(col, b) b개의 균일하지 않은 bin을 사용해 그룹 내 숫자 컬럼의 히스토그램을 계산합니다. 출력은 bin 중심과 높이를 나타내는 double 값 (x,y) 좌표의 크기 b 배열입니다. GenericUDAFHistogramNumeric
array collect_set(col) 중복 요소가 제거된 객체 집합을 반환합니다. GenericUDAFCollectSet
array collect_list(col) 중복을 포함한 객체 목록을 반환합니다. GenericUDAFCollectList
int ntile(integer x) 정렬된 파티션을 buckets라는 x개의 그룹으로 나누고 각 행에 버킷 번호를 할당합니다. 이를 통해 삼분위수, 사분위수, 십분위수, 백분위수 및 기타 요약 통계를 쉽게 계산할 수 있습니다. GenericUDAFNTile

대부분의 UDAF는 NULL 값을 무시합니다.

내장 테이블 생성 함수 (UDTF)

일반 사용자 정의 함수(예: concat())는 단일 입력 행을 받아 단일 출력 행을 냅니다. 반대로 테이블 생성 함수는 단일 입력 행을 여러 출력 행으로 변환합니다. UDTF는 가장 고급 함수 중 하나입니다.

행 집합 컬럼 타입 이름(시그니처) 설명 소스 코드
T explode(ARRAY<T> a) 배열을 여러 행으로 확장합니다. 배열의 각 요소마다 한 행씩, 단일 컬럼(col)을 가진 행 집합을 반환합니다. GenericUDTFExplode
Tkey, Tvalue explode(MAP<Tkey,Tvalue> m) 맵을 여러 행으로 확장합니다. 입력 맵의 각 키-값 쌍마다 한 행씩, 두 컬럼(key,value)을 가진 행 집합을 반환합니다.
int, T posexplode(ARRAY<T> a) 추가적인 int 타입 위치 컬럼(원래 배열에서 항목의 위치, 0부터 시작)과 함께 배열을 여러 행으로 확장합니다. 배열의 각 요소마다 한 행씩, 두 컬럼(pos,val)을 가진 행 집합을 반환합니다. GenericUDTFPosExplode
T1, …, Tn inline(ARRAY<STRUCT<f1:T1,...,fn:Tn>> a) 구조체 배열을 여러 행으로 확장합니다. 배열의 각 구조체마다 한 행씩, N개의 컬럼(N = 구조체의 최상위 요소 수)을 가진 행 집합을 반환합니다. GenericUDTFInline
T1, …, Tn/r stack(int r, T1 V1,..., Tn/r Vn) n 개의 값 V1,…,Vn을 r 개의 행으로 나눕니다. 각 행은 n/r 개의 컬럼을 갖습니다. r 은 상수여야 합니다. GenericUDTFStack
string1, …, stringn json_tuple(string jsonStr, string k1,..., string kn) JSON 문자열과 n 개의 키 집합을 받아 n 개의 값 튜플을 반환합니다. 이것은 get_json_object UDF보다 더 효율적인 버전입니다. 한 번의 호출로 여러 키를 얻을 수 있기 때문입니다. GenericUDTFJSONTuple
string1, …, stringn parse_url_tuple(string urlStr, string p1,..., string pn) URL 문자열과 n개의 URL 부분 집합을 받아 n개의 값 튜플을 반환합니다. 이것은 parse_url() UDF와 유사하지만 URL에서 여러 부분을 한 번에 추출할 수 있습니다. 유효한 부분 이름은 HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY: 입니다. GenericUDTFParseUrlTuple

문자열 함수

문자열 조작 함수가 없는 훌륭한 엔진은 없습니다. Apache Hive는 풍부한 내장 문자열 함수를 갖고 있습니다.

반환 타입 이름(시그니처) 설명 소스 코드
int ascii(string str) str의 첫 번째 문자의 숫자 값을 반환합니다. UDFAscii
string base64(binary bin) 인자를 바이너리에서 base64 문자열로 변환합니다. UDFBase64
int character_length(string str) str에 포함된 UTF-8 문자의 수를 반환합니다. char_length 함수는 이 함수의 약칭입니다. GenericUDFCharacterLength
string chr(bigint|double A) A와 이진적으로 동일한 ASCII 문자를 반환합니다. A가 256보다 크면 결과는 chr(A % 256)과 동일합니다. 예: select chr(88); 는 "X"를 반환합니다. UDFChr
string concat(string|binary A, string|binary B...) 매개변수로 전달된 문자열 또는 바이트를 순서대로 연결한 문자열 또는 바이트를 반환합니다. 예를 들어 concat('foo','bar')는 'foobar'를 결과로 냅니다. 이 함수는 임의의 수의 입력 문자열을 받을 수 있습니다. GenericUDFConcat
array <struct<string,double>> context_ngrams(array<array<string>>, array<string>, int K, int pf) "context" 문자열이 주어졌을 때 토큰화된 문장 집합에서 상위 k 문맥 N-gram을 반환합니다. 자세한 내용은 StatisticsAndDataMining을 참고하세요. GenericUDAFContextNGrams
string concat_ws(string SEP, string A, string B...) 위의 concat()과 같지만 커스텀 구분자 SEP를 사용합니다. GenericUDFConcatWS
string concat_ws(string SEP, array<string>) 위의 concat_ws()와 같지만 문자열 배열을 받습니다.
string decode(binary bin, string charset) 제공된 문자셋('US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16' 중 하나)을 사용해 첫 번째 인자를 문자열로 디코딩합니다. 어느 인자든 null이면 결과도 null입니다. GenericUDFDecode
string elt(N int, str1 string, str2 string, str3 string,...) 인덱스 번호에 해당하는 문자열을 반환합니다. 예: elt(2,'hello','world')는 'world'를 반환합니다. N이 1보다 작거나 인자 수보다 크면 NULL을 반환합니다. GenericUDFElt
binary encode(string src, string charset) 제공된 문자셋('US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16' 중 하나)을 사용해 첫 번째 인자를 BINARY로 인코딩합니다. 어느 인자든 null이면 결과도 null입니다. GenericUDFEncode
int field(val T, val1 T, val2 T, val3 T,...) val1,val2,val3,… 목록에서 val의 인덱스를 반환하거나 찾지 못하면 0을 반환합니다. 예: field('world','say','hello','world')는 3을 반환합니다. 모든 기본 타입이 지원되며 인자는 str.equals(x)로 비교됩니다. val이 NULL이면 반환 값은 0입니다. GenericUDFField
int find_in_set(string str, string strList) strList(쉼표로 구분된 문자열)에서 str의 첫 번째 발생을 반환합니다. 어느 인자든 null이면 null을 반환합니다. 첫 번째 인자에 쉼표가 포함되면 0을 반환합니다. 예: find_in_set('ab', 'abc,b,ab,c,def')는 3을 반환합니다. UDFFindInSet
string format_number(number x, int d) 숫자 X를 '###,###.##' 같은 형식으로 포맷하고 D 소수 자릿수로 반올림해 문자열로 반환합니다. D가 0이면 결과에 소수점이나 소수 부분이 없습니다. GenericUDFFormatNumber
string get_json_object(string json_string, string path) 지정된 JSON 경로에 따라 JSON 문자열에서 JSON 객체를 추출해 추출된 JSON 객체의 JSON 문자열로 반환합니다. 입력 JSON 문자열이 잘못되면 null을 반환합니다. 참고: JSON 경로는 [0-9a-z_] 문자만 가질 수 있습니다. 즉 대문자나 특수 문자는 안 됩니다. 또한 키는 숫자로 시작할 수 없습니다. 이는 Hive 컬럼 이름에 대한 제한 때문입니다. UDFJson
boolean in_file(string str, string filename) str 문자열이 filename에 전체 줄로 나타나면 true를 반환합니다. GenericUDFInFile
int instr(string str, string substr) str에서 substr이 처음 나타나는 위치를 반환합니다. 어느 인자든 null이면 null을, str에서 substr을 찾지 못하면 0을 반환합니다. 이것은 인덱스가 0부터가 아닙니다. str의 첫 번째 문자의 인덱스는 1입니다. GenericUDFInstr
int length(string A) 문자열의 길이를 반환합니다. GenericUDFLength
int locate(string substr, string str[, int pos]) str에서 위치 pos 이후에 substr이 처음 나타나는 위치를 반환합니다. GenericUDFLocate
string lower(string A) lcase(string A) B의 모든 문자를 소문자로 변환한 결과 문자열을 반환합니다. 예: lower('fOoBaR')은 'foobar'를 결과로 냅니다. GenericUDFLower
string lpad(string str, int len, string pad) str을 pad로 왼쪽 패딩해 길이 len으로 만든 결과를 반환합니다. str이 len보다 길면 반환 값은 len 문자로 잘립니다. pad 문자열이 비어 있으면 반환 값은 null입니다. GenericUDFLpad
string ltrim(string A) A의 앞(왼쪽)에서 공백을 제거한 결과 문자열을 반환합니다. 예: ltrim(' foobar ')는 'foobar '를 결과로 냅니다. GenericUDFLTrim
array <struct<string,double>> ngrams(array<array<string>>, int N, int K, int pf) sentences() UDAF가 반환하는 것 같은 토큰화된 문장 집합에서 상위 k N-gram을 반환합니다. 자세한 내용은 StatisticsAndDataMining을 참고하세요. GenericUDAFnGrams
int octet_length(string str) str을 UTF-8로 담는 데 필요한 옥텟(octet) 수를 반환합니다. octet_length(str)는 character_length(str)보다 클 수 있습니다. GenericUDFOctetLength
string parse_url(string urlString, string partToExtract [, string keyToExtract]) URL에서 지정된 부분을 반환합니다. partToExtract의 유효한 값은 HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO입니다. 예: parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST')는 'facebook.com'을 반환합니다. 또한 세 번째 인자로 키를 제공하면 QUERY에서 특정 키의 값을 추출할 수 있습니다. 예: parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1')는 'v1'을 반환합니다. UDFParseUrl
string printf(string format, Obj... args) printf 스타일 포맷 문자열에 따라 입력을 포맷해 반환합니다. GenericUDFPrintf
string quote(string text) 인용된 문자열을 반환합니다. Apache Hive 4.0.0에서 작은따옴표에 대한 이스케이프 문자를 포함합니다. GenericUDFQuote

quote 함수 예:

입력 출력
NULL NULL
DONT 'DONT'
DON'T 'DON'T'
반환 타입 이름(시그니처) 설명 소스 코드
string regexp_extract(string subject, string pattern, int index) 패턴을 사용해 추출한 문자열을 반환합니다. 예: regexp_extract('foothebar', 'foo(.*?)(bar)', 2)는 'bar'를 반환합니다. 미리 정의된 문자 클래스를 사용할 때 주의가 필요합니다. 두 번째 인자로 '\s'를 사용하면 문자 s와 일치하고, 공백과 일치하려면 '\s'가 필요합니다. 'index' 매개변수는 Java regex Matcher group() 메서드 인덱스입니다. UDFRegExpExtract
string regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT) INITIAL_STRING에서 PATTERN에 정의된 Java 정규식 문법과 일치하는 모든 부분 문자열을 REPLACEMENT로 바꾼 결과 문자열을 반환합니다. 예: regexp_replace("foobar", "oo|ar", "")는 'fb'를 반환합니다. 미리 정의된 문자 클래스를 사용할 때 주의가 필요합니다. UDFRegExpReplace
string repeat(string str, int n) str을 n번 반복합니다. UDFRepeat
string replace(string A, string OLD, string NEW) 문자열 A에서 OLD의 겹치지 않는 모든 발생을 NEW로 바꾼 결과를 반환합니다. 예: select replace("ababab", "abab", "Z"); 는 "Zab"를 반환합니다. UDFReplace
string reverse(string A) 뒤집힌 문자열을 반환합니다. UDFReverse
string rpad(string str, int len, string pad) str을 pad로 오른쪽 패딩해 길이 len으로 만든 결과를 반환합니다. str이 len보다 길면 반환 값은 len 문자로 잘립니다. pad 문자열이 비어 있으면 반환 값은 null입니다. GenericUDFRpad
string rtrim(string A) A의 끝(오른쪽)에서 공백을 제거한 결과 문자열을 반환합니다. 예: rtrim(' foobar ')는 ' foobar'를 결과로 냅니다. GenericUDFRTrim
array <array> sentences(string str, string lang, string locale) 자연어 텍스트를 단어와 문장으로 토큰화합니다. 각 문장은 적절한 문장 경계에서 끊어져 단어 배열로 반환됩니다. 'lang'과 'locale'은 선택 인자입니다. 예: sentences('Hello there! How are you?')는 (("Hello","there"), ("How","are","you"))를 반환합니다. GenericUDFSentences
string space(int n) n개의 공백으로 이루어진 문자열을 반환합니다. UDFSpace
array split(string str, string pat) str을 pat(정규식) 기준으로 나눕니다. GenericUDFSplit
map <string,string> str_to_map(text[, delimiter1, delimiter2]) 두 개의 구분자를 사용해 text를 키-값 쌍으로 나눕니다. Delimiter1은 text를 K-V 쌍으로 나누고, Delimiter2는 각 K-V 쌍을 나눕니다. 기본 구분자는 delimiter1이 ','이고 delimiter2가 ':'입니다. GenericUDFStringToMap
string substr(string|binary A, int start) substring(string|binary A, int start) 시작 위치부터 문자열 A의 끝까지 A의 부분 문자열 또는 바이트 배열 조각을 반환합니다. 예: substr('foobar', 4)는 'bar'를 결과로 냅니다. GenericUDFSubstringIndex
string substr(string|binary A, int start, int len) substring(string|binary A, int start, int len) 시작 위치부터 길이 len까지 A의 부분 문자열 또는 바이트 배열 조각을 반환합니다. 예: substr('foobar', 4, 1)는 'b'를 결과로 냅니다.
string substring_index(string A, string delim, int count) delim 구분자의 count번째 발생 전까지 문자열 A의 부분 문자열을 반환합니다. count가 양수이면(왼쪽부터 세어) 마지막 구분자의 왼쪽을 반환합니다. count가 음수이면(오른쪽부터 세어) 마지막 구분자의 오른쪽을 반환합니다. substring_index는 delim을 찾을 때 대소문자를 구분합니다. 예: substring_index('www.apache.org', '.', 2) = 'www.apache'. GenericUDFSubstringIndex
string translate(string|char|varchar input, string|char|varchar from, string|char|varchar to) from 문자열에 있는 문자를 to 문자열의 해당 문자로 바꿔 입력 문자열을 변환합니다. PostgreSQLtranslate 함수와 유사합니다. 이 UDF의 매개변수 중 하나라도 NULL이면 결과도 NULL입니다. GenericUDFTranslate
string trim(string A) A의 양쪽 끝에서 공백을 제거한 결과 문자열을 반환합니다. 예: trim(' foobar ')는 'foobar'를 결과로 냅니다. GenericUDFTrim
binary unbase64(string str) 인자를 base64 문자열에서 BINARY로 변환합니다. UDFUnbase64
string upper(string A) ucase(string A) A의 모든 문자를 대문자로 변환한 결과 문자열을 반환합니다. 예: upper('fOoBaR')은 'FOOBAR'를 결과로 냅니다. GenericUDFUpper
string initcap(string A) 각 단어의 첫 글자는 대문자, 나머지는 소문자로 한 문자열을 반환합니다. 단어는 공백으로 구분됩니다. GenericUDFInitCap
int levenshtein(string A, string B) 두 문자열 간의 Levenshtein 거리를 반환합니다. 예: levenshtein('kitten','sitting')은 3을 결과로 냅니다. GenericUDFLevenshtein
string soundex(string A) 문자열의 사운덱스 코드를 반환합니다. 예: soundex('Miller')는 M460을 결과로 냅니다. GenericUDFSoundex
string deserialize(base64 encoded message, compressionFormat) compressionFormat으로 압축되고 base64로 인코딩된 주어진 메시지의 평문 문자열을 반환합니다. 현재 gzip 압축 및 base64 인코딩 문자열에 대해서만 'gzip'을 지원합니다. 예: deserialize('H4sIAAAAAAAA/ytJLS4BAAx+f9gEAAAA', 'gzip') 결과: test GenericUDFDeserialize

날짜 함수

많은 분석 워크로드에서 Date는 Hive에서 가장 많이 사용되는 내장 함수 중 하나입니다. 다음 목록은 Hive에서 지원하는 내장 날짜 함수를 포함합니다.

반환 타입 이름(시그니처) 설명 소스 코드
string from_unixtime(bigint unixtime[, string pattern]) 에포크(1970-01-01 00:00:00 UTC) 이후의 초 수를 지정된 패턴을 사용해 현재 시간대의 해당 순간의 타임스탬프를 나타내는 문자열로 변환합니다(hive.local.time.zone 구성 사용). 패턴이 없으면 기본값('yyyy-MM-dd HH:mm:ss')이 사용됩니다. 예: from_unixtime(0)=1970-01-01 00:00:00 (hive.local.time.zone=Etc/GMT). Hive 4.0.0부터 "hive.datetime.formatter" 속성으로 기본 formatter 구현과 그에 따른 허용 패턴·동작을 제어할 수 있습니다. GenericUDFFromUnixTime
bigint unix_timestamp() 현재 Unix 타임스탬프를 초 단위로 가져옵니다. 이 함수는 결정적이지 않으며 그 값이 쿼리 실행 범위에 대해 고정되지 않아 쿼리 최적화를 방해합니다. 2.0부터 CURRENT_TIMESTAMP 상수를 위해 deprecated 되었습니다. GenericUDFUnixTimeStamp
bigint unix_timestamp(string date) 기본 패턴을 사용해 DateTimestring을 unix time(에포크 이후 초)으로 변환합니다. 허용되는 기본 패턴은 기본 formatter 구현에 따라 달라집니다. DateTime 문자열에는 시간대가 없으므로 "hive.local.time.zone" 속성으로 지정된 로컬 시간대를 사용합니다. 변환 실패 시 null을 반환합니다. 예: unix_timestamp('2009-03-20 11:30:01') = 1237573801. Hive 4.0.0부터 "hive.datetime.formatter" 속성을 사용할 수 있습니다.
bigint unix_timestamp(string date, string pattern) 지정된 패턴을 사용해 날짜-시간 문자열을 unix time(에포크 이후 초)으로 변환합니다. 허용되는 패턴과 동작은 기본 formatter 구현에 따라 다릅니다. 변환 실패 시 null을 반환합니다. 예: unix_timestamp('2009-03-20', 'yyyy-MM-dd') = 1237532400. Hive 4.0.0부터 "hive.datetime.formatter" 속성을 사용할 수 있습니다.
date to_date(string timestamp) 타임스탬프 날짜 객체의 날짜 부분을 반환합니다. 예: to_date("1970-01-01 00:00:00"). GenericUDFDate
int year(string date) 날짜 또는 타임스탬프 문자열의 연도 부분을 반환합니다: year("1970-01-01 00:00:00") = 1970, year("1970-01-01") = 1970. UDFYear
int quarter(date/timestamp/string) 날짜, 타임스탬프 또는 문자열에 대해 연도의 분기를 1~4 범위로 반환합니다. 예: quarter('2015-04-08') = 2. GenericUDFQuarter
int month(string date) 날짜 또는 타임스탬프 문자열의 월 부분을 반환합니다. 예: month("1970-11-01 00:00:00") = 11, month("1970-11-01") = 11. UDFMonth
int day(string date) dayofmonth(date) 날짜 또는 타임스탬프 문자열의 일 부분을 반환합니다. 예: day("1970-11-01 00:00:00") = 1, day("1970-11-01") = 1. UDFDayOfMonth
int hour(string date) 타임스탬프의 시를 반환합니다. 예: hour('2009-07-30 12:58:59') = 12, hour('12:58:59') = 12. UDFHour
int minute(string date) 타임스탬프의 분을 반환합니다. UDFMinute
int second(string date) 타임스탬프의 초를 반환합니다. UDFSecond
int weekofyear(string date) 타임스탬프 문자열의 주 번호를 반환합니다. 예: weekofyear("1970-11-01 00:00:00") = 44 또는 weekofyear("1970-11-01") = 44. UDFWeekOfYear
int extract(field FROM source) source에서 일이나 시 같은 필드를 검색합니다. source는 date, timestamp, interval 또는 date나 timestamp로 변환 가능한 문자열이어야 합니다. 지원 필드는 day, dayofweek, hour, minute, month, quarter, second, week, year입니다. 예: 1. select extract(month from "2016-10-20")는 10. 2. select extract(hour from "2016-10-20 05:06:07")는 5. 3. select extract(dayofweek from "2016-10-20 05:06:07")는 5. 4. select extract(month from interval '1-3' year to month)는 3. 5. select extract(minute from interval '3 12:20:30' day to second)는 20.
int datediff(string enddate, string startdate) startdate에서 enddate까지의 일 수를 반환합니다. 예: datediff('2009-03-01', '2009-02-27') = 2. GenericUDFDateDiff
date date_add(date/timestamp/string startdate, tinyint/smallint/int days) startdate에 일 수를 더합니다. 예: date_add('2008-12-31', 1) = '2009-01-01'. GenericUDFDateAdd
date date_sub(date/timestamp/string startdate, tinyint/smallint/int days) startdate에서 일 수를 뺍니다: date_sub('2008-12-31', 1) = '2008-12-30'. GenericUDFDateSub
timestamp from_utc_timestamp({any primitive type} ts, string timezone) UTC의 타임스탬프*를 주어진 시간대로 변환합니다. * 타임스탬프는 timestamp/date, tinyint/smallint/int/bigint, float/double, decimal을 포함한 기본 타입입니다. 소수 값은 초로, 정수 값은 밀리초로 간주됩니다. 예: from_utc_timestamp(2592000.0,'PST'), from_utc_timestamp(2592000000,'PST'), from_utc_timestamp(timestamp '1970-01-30 16:00:00','PST') 모두 타임스탬프 1970-01-30 08:00:00을 반환합니다. GenericUDFFromUtcTimestamp
timestamp to_utc_timestamp({any primitive type} ts, string timezone) 주어진 시간대의 타임스탬프*를 UTC로 변환합니다. * 타임스탬프는 기본 타입입니다. 소수 값은 초로, 정수 값은 밀리초로 간주됩니다. 예: to_utc_timestamp(2592000.0,'PST'), to_utc_timestamp(2592000000,'PST'), to_utc_timestamp(timestamp '1970-01-30 16:00:00','PST') 모두 타임스탬프 1970-01-31 00:00:00을 반환합니다. GenericUDFToUtcTimestamp
date current_date 쿼리 평가 시작 시점의 현재 날짜를 반환합니다. 같은 쿼리 내의 모든 current_date 호출은 같은 값을 반환합니다. GenericUDFCurrentDate
timestamp current_timestamp 쿼리 평가 시작 시점의 현재 타임스탬프를 반환합니다. 같은 쿼리 내의 모든 current_timestamp 호출은 같은 값을 반환합니다. GenericUDFCurrentTimestamp
string add_months(string start_date, int num_months, output_date_format) start_date 이후 num_months 개월 후의 날짜를 반환합니다. start_date는 문자열, date 또는 timestamp입니다. num_months는 정수입니다. start_date가 월의 마지막 날이거나 결과 월이 start_date의 일 구성요소보다 적은 일수를 갖는 경우 결과는 결과 월의 마지막 날입니다. 그렇지 않으면 결과는 start_date와 같은 일 구성요소를 갖습니다. 기본 출력 형식은 'yyyy-MM-dd'입니다. Hive 4.0.0부터 add_months는 선택 인자 output_date_format을 지원하는데, 이는 유효한 출력 날짜 형식을 나타내는 문자열을 받습니다. 예: add_months('2009-08-31', 1)은 '2009-09-30'을 반환하고, add_months('2017-12-31 14:15:16', 2, 'yyyy-MM-dd HH:mm:ss')은 '2018-02-28 14:15:16'을 반환합니다. GenericUDFAddMonths
string last_day(string date) date가 속한 달의 마지막 날을 반환합니다. date는 'yyyy-MM-dd HH:mm:ss' 또는 'yyyy-MM-dd' 형식의 문자열입니다. 날짜의 시간 부분은 무시됩니다! GenericUDFLastDay
string next_day(string start_date, string day_of_week) start_date보다 나중이고 day_of_week라는 이름을 가진 첫 번째 날짜를 반환합니다. start_date는 string/date/timestamp입니다. day_of_week는 요일의 2글자, 3글자 또는 전체 이름입니다(예: Mo, tue, FRIDAY). start_date의 시간 부분은 무시됩니다. 예: next_day('2015-01-14', 'TU') = 2015-01-20. GenericUDFNextDay
string trunc(string date, string format) format이 지정하는 단위로 잘린 날짜를 반환합니다. 지원 형식: MONTH/MON/MM, YEAR/YYYY/YY. 예: trunc('2015-03-17', 'MM') = 2015-03-01. GenericUDFTrunc
double months_between(date1, date2) 날짜 date1date2 사이의 개월 수를 반환합니다. date1date2보다 나중이면 결과는 양수입니다. date1date2보다 이르면 결과는 음수입니다. date1과 date2가 같은 월의 일이거나 둘 다 월의 마지막 날이면 결과는 항상 정수입니다. 그렇지 않으면 UDF는 31일 기준 월에 기반해 결과의 소수 부분을 계산하고 date1과 date2의 시간 구성요소 차이를 고려합니다. date1과 date2 타입은 'yyyy-MM-dd' 또는 'yyyy-MM-dd HH:mm:ss' 형식의 date, timestamp 또는 string입니다. 결과는 소수 8자리로 반올림됩니다. 예: months_between('1997-02-28 10:30:00', '1996-10-30') = 3.94959677. GenericUDFMonthsBetween
string date_format(date/timestamp/string ts, string pattern) 지정된 패턴을 사용해 date/timestamp/string을 문자열 값으로 변환합니다. 허용되는 패턴과 동작은 기본 formatter 구현에 따라 다릅니다. 패턴 인자는 상수여야 합니다. 예: date_format('2015-04-08', 'y') = '2015'. date_format을 사용해 다른 UDF를 구현할 수도 있습니다: * dayname(date)는 date_format(date, 'EEEE'), dayofyear(date)는 date_format(date, 'D')입니다. Hive 4.0.0부터 "hive.datetime.formatter" 속성을 사용할 수 있습니다. GenericUDFDateFormat

수학 함수

Hive에서 지원하는 내장 수학 함수는 다음과 같습니다.

반환 타입 이름(시그니처) 설명 소스 코드
double round(double a) a의 반올림된 bigint 값을 반환합니다. GenericUDFRound
double round(double a, int d) 소수 d자리로 반올림한 a를 반환합니다.
double bround(double a) HALF_EVEN 반올림 모드를 사용해 a의 반올림된 bigint 값을 반환합니다. 가우스 반올림 또는 은행가 반올림이라고도 합니다. 예: bround(2.5) = 2, bround(3.5) = 4. GenericUDFBRound
double bround(double a, int d) HALF_EVEN 반올림 모드를 사용해 소수 d자리로 반올림한 a를 반환합니다. 예: bround(8.25, 1) = 8.2, bround(8.35, 1) = 8.4.
bigint floor(double a) a와 같거나 작은 최대 bigint 값을 반환합니다. GenericUDFFloor
bigint ceil(double a), ceiling(double a) a와 같거나 큰 최소 bigint 값을 반환합니다. GenericUDFCeil
double rand(), rand(INT seed) 0에서 1까지 균일하게 분포하는(행마다 변하는) 난수를 반환합니다. 시드를 지정하면 생성되는 난수 시퀀스가 결정적이도록 보장합니다. UDFRand
double exp(double a), exp(decimal a) e가 자연로그의 밑일 때 ea를 반환합니다. UDFExp
double ln(double a), ln(decimal a) 인자 a의 자연로그를 반환합니다. UDFLn
double log10(double a), log10(decimal a) 인자 a의 밑이 10인 로그를 반환합니다. UDFLog10
double log2(double a), log2(decimal a) 인자 a의 밑이 2인 로그를 반환합니다. UDFLog2
double log(double base, double a) log(decimal base, decimal a) 인자 a의 밑이 base인 로그를 반환합니다. UDFLog
double pow(double a, double p), power(double a, double p) ap를 반환합니다. GenericUDFPower
double sqrt(double a), sqrt(decimal a) a의 제곱근을 반환합니다. UDFSqrt
string bin(bigint a) 이진 형식의 숫자를 반환합니다. UDFBin
string hex(bigint a) hex(string a) hex(binary a) 인자가 int 또는 binary이면 hex는 숫자를 16진수 형식의 문자열로 반환합니다. 숫자가 문자열이면 각 문자를 16진수 표현으로 변환해 결과 문자열을 반환합니다. UDFHex
binary unhex(STRING a) hex의 역입니다. 각 문자 쌍을 16진수 숫자로 해석해 숫자의 바이트 표현으로 변환합니다. UDFUnhex
string conv(bigint num, int from_base, int to_base), conv(STRING num, int from_base, int to_base) 주어진 밑에서 다른 밑으로 숫자를 변환합니다. UDFConv
double abs(double a) 절댓값을 반환합니다. GenericUDFAbs
int 또는 double pmod(INT a, int b), pmod(double a, double b) a mod b의 양수 값을 반환합니다. GenericUDFOPMod
double sin(double a), sin(decimal a) a의 사인을 반환합니다(a는 라디안). UDFSin
double asin(double a), asin(decimal a) -1<=a<=1이면 a의 아크사인을, 그렇지 않으면 NULL을 반환합니다. UDFAsin
double cos(double a), cos(decimal a) a의 코사인을 반환합니다(a는 라디안). UDFCos
double acos(double a), acos(decimal a) -1<=a<=1이면 a의 아크코사인을, 그렇지 않으면 NULL을 반환합니다. UDFAcos
double tan(double a), tan(decimal a) a의 탄젠트를 반환합니다(a는 라디안). UDFTan
double atan(double a), atan(decimal a) a의 아크탄젠트를 반환합니다. UDFAtan
double degrees(double a), degrees(decimal a) a의 값을 라디안에서 도(degree)로 변환합니다. UDFDegrees
double radians(double a), radians(double a) a의 값을 도에서 라디안으로 변환합니다. UDFRadians
int 또는 double positive(INT a), positive(double a) a를 반환합니다. GenericUDFOPPositive
int 또는 double negative(INT a), negative(double a) -a를 반환합니다. GenericUDFOPNegative
double 또는 int sign(double a), sign(decimal a) a의 부호를 '1.0'(a가 양수) 또는 '-1.0'(a가 음수), 그 외에는 '0.0'으로 반환합니다. decimal 버전은 double 대신 int를 반환합니다. UDFSign
double e() e의 값을 반환합니다. UDFE
double pi() pi의 값을 반환합니다. UDFPI
bigint factorial(INT a) a의 팩토리얼을 반환합니다. 유효한 a는 [0..20]입니다. GenericUDFFactorial
double cbrt(double a) double 값 a의 세제곱근을 반환합니다. GenericUDFCbrt
int / bigint shiftleft(TINYINT|SMALLINT|INT a, int b) shiftleft(bigint a, int b) 비트 왼쪽 시프트. a를 왼쪽으로 b 위치 시프트합니다. tinyint, smallint, int a에 대해 int를, bigint a에 대해 bigint를 반환합니다. UDFOPBitShiftLeft
int / bigint shiftright(TINYINT|SMALLINT|INT a, int b) shiftright(bigint a, int b) 비트 오른쪽 시프트. a를 오른쪽으로 b 위치 시프트합니다. tinyint, smallint, int a에 대해 int를, bigint a에 대해 bigint를 반환합니다. UDFOPBitShiftRight
int / bigint shiftrightunsigned(TINYINT|SMALLINT|INT a, int b), shiftrightunsigned(bigint a, int b) 비트 부호 없는 오른쪽 시프트. a를 오른쪽으로 b 위치 시프트합니다. tinyint, smallint, int a에 대해 int를, bigint a에 대해 bigint를 반환합니다. UDFOPBitShiftRightUnsigned
T greatest(T v1, T v2, ...) 값 목록의 최댓값을 반환합니다. 하나 이상의 인자가 NULL이면 NULL을 반환하도록 수정되었고, ">" 연산자와 일치하도록 엄격한 타입 제한이 완화됐습니다. GenericUDFGreatest
T least(T v1, T v2, ...) 값 목록의 최솟값을 반환합니다. 하나 이상의 인자가 NULL이면 NULL을 반환하도록 수정되었고, "<" 연산자와 일치하도록 엄격한 타입 제한이 완화됐습니다. GenericUDFLeast
int width_bucket(NUMERIC expr, NUMERIC min_value, NUMERIC max_value, int num_buckets) expr을 i번째 균등 크기 버킷에 매핑해 0과 num_buckets+1 사이의 정수를 반환합니다. 버킷은 [min_value, max_value]를 균등 크기 영역으로 나눠 만들어집니다. expr < min_value이면 1을, expr > max_value이면 num_buckets+1을 반환합니다. 자세한 내용은 https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions214.htm을 참고하세요. GenericUDFWidthBucket
double cosh(double x) 라디안인 x의 쌍곡 코사인을 반환합니다. 예: cosh(0) 결과: 1. UDFCosh
double tanh(double x) 라디안인 x의 쌍곡 탄젠트를 반환합니다. 예: tanh(0) 결과: 1. UDFTanh

컬렉션 함수

Hive에서 지원하는 내장 컬렉션 함수는 다음과 같습니다.

반환 타입 이름(시그니처) 설명 OSS
int size(Map<K.V>) 맵 타입의 요소 수를 반환합니다.
int size(Array<T>) 배열 타입의 요소 수를 반환합니다.
array map_keys(Map<K.V>) 입력 맵의 키를 포함하는 비정렬 배열을 반환합니다.
array map_values(Map<K.V>) 입력 맵의 값을 포함하는 비정렬 배열을 반환합니다.
boolean array_contains(Array<T>, value) 배열이 제공된 매개변수 값을 포함하면 TRUE를 반환합니다.
array sort_array(Array<T>) 배열 요소의 자연 순서에 따라 입력 배열을 오름차순으로 정렬해 반환합니다.
array array(obj1, obj2, .... objN) 입력 배열과 같은 타입이면서 고유한 값을 가진 배열을 반환합니다. 예: array('b','d','d','a')는 ['b','d','a']를 반환합니다. GenericUDFArrayDistinct.java
array array_slice(array, start, length) 요소의 부분 집합 또는 범위를 반환합니다. 예: array_slice(array(1, 2, 3, 4), 2, 2) 결과: 3,4. GenericUDFArraySlice
t array_min((array(obj1, obj2, obj3...)) 순서가 지원되는 요소를 가진 배열에서 최솟값을 반환합니다. 예: array_min(array(1, 3, 0, NULL)) 결과: 0. GenericUDFArrayMin
t array_max((array(obj1, obj2, obj3...)) 순서가 지원되는 요소를 가진 배열에서 최댓값을 반환합니다. 예: array_max(array(1, 3, 0, NULL)) 결과: 3. GenericUDFArrayMax
t array_distinct(array(obj1, obj2, obj3...)) 입력 배열과 같은 타입이면서 고유한 값을 가진 배열을 반환합니다. 예: array_distinct(array('b','d','d','a')) 결과: ['b','d','a']. GenericUDFArrayDistinct
string array_join(array, delimiter, replaceNull) 배열의 요소를 지정된 구분자로 연결합니다. 예: array_join(array(1, 2, NULL, 4), ',', ':') 결과: 1,2,:,4. GenericUDFArrayJoin
array array_expect(array1, array2) array1에는 있지만 array2에는 없는 요소의 배열을 반환합니다. 예: array_expect(array(1, 2, 3, 4), array(2, 3)) 결과: [1,4]. GenericUDFArrayExcept
array array_intersect(array1, array2) array1과 array2의 교집합에 있는 요소의 배열을 중복 없이 반환합니다. 예: array_intersect(array(1, 2, 3, 4), array(1, 2, 3)) 결과: [1,2,3]. GenericUDFArrayIntersect
array array_union(array1, array2) array1과 array2의 합집합에 있는 요소의 배열을 중복 없이 반환합니다. 예: array_union(array(1, 2, 2, 4), array(2, 3)) 결과: [1, 2, 3, 4]. GenericUDFArrayUnion
array array_remove(array, element) 배열에서 요소의 모든 발생을 제거합니다. 예: array_remove(array(1, 2, 3, 4, 2), 2) 결과: [1, 3, 4]. GenericUDFArrayRemove

타입 변환 함수

Hive에서 지원하는 내장 타입 변환 함수는 다음과 같습니다.

반환 타입 이름(시그니처) 설명 소스 코드
binary binary(string|binary) 매개변수를 binary로 캐스팅합니다. GenericUDFBaseBinary
타입 cast(expr as <type>) 표현식 expr의 결과를 으로 변환합니다. 예: cast('1' as bigint)는 문자열 '1'을 정수 표현으로 변환합니다. 변환에 실패하면 null을 반환합니다. cast(expr as boolean)의 경우 Hive는 비어 있지 않은 문자열에 대해 true를 반환합니다.
string 또는 datetime CAST(expr AS <type> FORMAT <pattern>) 제공된 을 사용해 표현식을 지정된 으로 변환합니다. 이 있으면 SQL:2016 표준 사양을 따릅니다. 현재 datetime과 string 데이터 타입 간의 변환만 지원됩니다. GenericUDFCastFormat

조건 함수

Hive에서 지원하는 내장 조건 함수는 다음과 같습니다.

반환 타입 이름(시그니처) 설명
T if(boolean testCondition, T valueTrue, T valueFalseOrNull) testCondition이 true이면 valueTrue를, 그렇지 않으면 valueFalseOrNull을 반환합니다.
boolean isnull(a) a가 NULL이면 true를, 그렇지 않으면 false를 반환합니다.
boolean isnotnull(a) a가 NULL이 아니면 true를, 그렇지 않으면 false를 반환합니다.
T nvl(T value, T default_value) value가 null이면 기본값을, 그렇지 않으면 value를 반환합니다.
T COALESCE(T v1, T v2, ...) NULL이 아닌 첫 번째 v를 반환하거나, 모든 v가 NULL이면 NULL을 반환합니다.
T CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END a = b이면 c를, a = d이면 e를, 그 외에는 f를 반환합니다.
T CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END a = true이면 b를, c = true이면 d를, 그 외에는 e를 반환합니다.
T nullif(a, b) a=b이면 NULL을, 그렇지 않으면 a를 반환합니다. CASE WHEN a = b then NULL else a의 약칭입니다.
void assert_true(boolean condition) 'condition'이 true가 아니면 예외를 던지고, 그렇지 않으면 null을 반환합니다. 예: select assert_true(2<1).

데이터 마스킹 함수

Hive에서 지원하는 내장 데이터 마스킹 함수는 다음과 같습니다.

반환 타입 이름(시그니처) 설명 소스 코드
string mask(string str[, string upper[, string lower[, string number]]]) str의 마스킹된 버전을 반환합니다. 기본적으로 대문자는 "X"로, 소문자는 "x"로, 숫자는 "n"으로 변환됩니다. 예: mask("abcd-EFGH-8765-4321")은 xxxx-XXXX-nnnn-nnnn을 결과로 냅니다. 추가 인자를 제공해 마스크에 사용되는 문자를 재정의할 수 있습니다. 두 번째 인자는 대문자 마스크 문자, 세 번째는 소문자, 네 번째는 숫자를 제어합니다. 예: mask("abcd-EFGH-8765-4321", "U", "l", "#")은 llll-UUUU-####-####을 결과로 냅니다. GenericUDFMask
string mask_first_n(string str[, int n]) 처음 n개 값이 마스킹된 str의 마스킹 버전을 반환합니다. 대문자는 "X"로, 소문자는 "x"로, 숫자는 "n"으로 변환됩니다. 예: mask_first_n("1234-5678-8765-4321", 4)은 nnnn-5678-8765-4321을 결과로 냅니다. GenericUDFMaskFirstN
string mask_last_n(string str[, int n]) 마지막 n개 값이 마스킹된 str의 마스킹 버전을 반환합니다. 대문자는 "X"로, 소문자는 "x"로, 숫자는 "n"으로 변환됩니다. 예: mask_last_n("1234-5678-8765-4321", 4)은 1234-5678-8765-nnnn을 결과로 냅니다. GenericUDFMaskLastN
string mask_show_first_n(string str[, int n]) 처음 n개 문자를 마스킹하지 않고 보여주는 str의 마스킹 버전을 반환합니다. 대문자는 "X"로, 소문자는 "x"로, 숫자는 "n"으로 변환됩니다. 예: mask_show_first_n("1234-5678-8765-4321", 4)은 1234-nnnn-nnnn-nnnn을 결과로 냅니다. GenericUDFMaskShowFirstN
string mask_show_last_n(string str[, int n]) 마지막 n개 문자를 마스킹하지 않고 보여주는 str의 마스킹 버전을 반환합니다. 대문자는 "X"로, 소문자는 "x"로, 숫자는 "n"으로 변환됩니다. 예: mask_show_last_n("1234-5678-8765-4321", 4)은 nnnn-nnnn-nnnn-4321을 결과로 냅니다. GenericUDFMaskShowLastN
string mask_hash(string|char|varchar str) str에 기반한 해시 값을 반환합니다. 해시는 일관적이며 마스킹된 값을 테이블 간에 조인하는 데 사용할 수 있습니다. 이 함수는 문자열이 아닌 타입에 대해 null을 반환합니다. GenericUDFMaskHash

기타 함수

Hive에는 위의 어떤 범주에도 속하지 않는 여러 내장 함수가 있습니다. 이는 Hive가 가진 특별한 함수들입니다.

반환 타입 이름(시그니처) 설명 소스 코드
varies java_method(class, method[, arg1[, arg2..]]) reflect의 동의어입니다. GenericUDFReflect
varies reflect(class, method[, arg1[, arg2..]]) 리플렉션을 사용해 인자 시그니처를 매칭하여 Java 메서드를 호출합니다. 예제는 Reflect (Generic) UDF를 참고하세요. GenericUDFReflect
int hash(a1[, a2...]) 인자의 해시 값을 반환합니다. GenericUDFHash
string current_user() 구성된 인증 관리자에서 현재 사용자 이름을 반환합니다. 연결 시 제공한 사용자와 같을 수 있지만 일부 인증 관리자(예: HadoopDefaultAuthenticator)에서는 다를 수 있습니다. GenericUDFCurrentUser
string logged_in_user() 세션 상태에서 현재 사용자 이름을 반환합니다. 이는 Hive에 연결할 때 제공한 사용자 이름입니다. GenericUDFLoggedInUser
string current_database() 현재 데이터베이스 이름을 반환합니다. GenericUDFCurrentDatabase
string md5(string/binary) 문자열 또는 binary에 대한 MD5 128비트 체크섬을 계산합니다. 값은 32자리 16진수 문자열로 반환되며, 인자가 NULL이면 NULL을 반환합니다. 예: md5('ABC') = '902fbdd2b1df0c4f70b4a5d23525e932'. UDFMd5
string sha1(string/binary) sha(string/binary) 문자열 또는 binary에 대한 SHA-1 다이제스트를 계산해 값을 16진수 문자열로 반환합니다. 예: sha1('ABC') = '3c01bdbb26f358bab27f267924aa2c9a03fcfdb8'. UDFSha1
bigint crc32(string/binary) 문자열 또는 binary 인자에 대한 순환 중복 검사(CRC) 값을 계산해 bigint 값을 반환합니다. 예: crc32('ABC') = 2743272264. UDFCrc32
string sha2(string/binary, int) SHA-2 계열 해시 함수(SHA-224, SHA-256, SHA-384, SHA-512)를 계산합니다. 첫 번째 인자는 해시할 문자열 또는 binary입니다. 두 번째 인자는 원하는 결과 비트 길이를 나타내며 224, 256, 384, 512 또는 0(256과 동일)이어야 합니다. SHA-224는 Java 8부터 지원됩니다. 어느 인자든 NULL이거나 해시 길이가 허용 값 중 하나가 아니면 반환 값은 NULL입니다. 예: sha2('ABC', 256) = 'b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78'. GenericUDFSha2
binary aes_encrypt(input string/binary, key string/binary) AES를 사용해 입력을 암호화합니다. 128, 192 또는 256비트 키 길이를 사용할 수 있습니다. 192·256비트 키는 Java 확장(JCE) 무제한 강도 관할 정책 파일이 설치된 경우 사용할 수 있습니다. 어느 인자든 NULL이거나 키 길이가 허용 값 중 하나가 아니면 반환 값은 NULL입니다. 예: base64(aes_encrypt('ABC', '1234567890123456')) = 'y6Ss+zCYObpCbgfWfyNWTw=='. GenericUDFAesEncrypt
binary aes_decrypt(input binary, key string/binary) AES를 사용해 입력을 복호화합니다. 128, 192 또는 256비트 키 길이를 사용할 수 있습니다. 192·256비트 키는 JCE 무제한 강도 관할 정책 파일이 설치된 경우 사용할 수 있습니다. 어느 인자든 NULL이거나 키 길이가 허용 값 중 하나가 아니면 반환 값은 NULL입니다. 예: aes_decrypt(unbase64('y6Ss+zCYObpCbgfWfyNWTw=='), '1234567890123456') = 'ABC'. GenericUDFAesDecrypt
string version() Hive 버전을 반환합니다. 문자열은 2개의 필드를 포함하는데, 첫 번째는 빌드 번호, 두 번째는 빌드 해시입니다. 예: "select version();"은 "2.1.0.2.5.0.0-1245 r027527b9c5ce1a3d7d0b6d2e6de2378fb0c39232"를 반환할 수 있습니다. 실제 결과는 빌드에 따라 다릅니다. UDFVersion
bigint surrogate_key([write_id_bits, task_id_bits]) 테이블에 데이터를 입력할 때 행에 대한 숫자 ID를 자동 생성합니다. acid 또는 insert-only 테이블의 기본값으로만 사용할 수 있습니다. GenericUDFSurrogateKey
string typeof(x) 제공된 인자의 타입을 반환합니다. GenericUDFTypeOf

지리공간 (Geospatial)

Hive 4.0은 ESRI 기반의 표준 지리공간 UDF를 제공합니다.

ESRI UDF는 매우 광범위한 목록을 구성하며, Hive 문서가 함수 문서 전체를 복제하지 않는다는 점에 유의해야 합니다. 여기에서 ESRI UDF 문서를 찾을 수 있습니다.

Hive 지리공간 지원에 대한 블로그

커스텀 UDF 만들기

Apache Hive는 광범위한 내장 사용자 정의 함수(UDF)를 제공합니다. 그러나 내장 함수로 다루지 못하는 특정 요구 사항은 기본적인 Java 이해만으로 사용자가 직접 커스텀 UDF를 개발할 수 있습니다.

Hive의 커스텀 UDF는 입력·출력 행 수에 따라 세 가지 유형으로 분류됩니다. 각 UDF 유형은 구현해야 하는 서로 다른 인터페이스에 대응합니다.

UDF UDAF UDTF
단일 행을 입력으로 받아 단일 행을 출력으로 반환하는 함수입니다. length, round 같은 함수. org.apache.hadoop.hive.ql.exec.UDF; 여러 행을 입력으로 받아 단일 행을 출력으로 반환하는 함수입니다. Count, Min, Max 같은 함수. 단일 행을 입력으로 받아 여러 행(결과 집합 또는 테이블)을 출력으로 반환하는 함수입니다. explode, parse_url_tuple 같은 함수.

더 알아보기 (Learn more)

직접 UDAF를 만들고 싶다면 GenericUDAF 작성 튜토리얼이 좋은 출발점이에요. 함수를 커스텀으로 등록하고 사용하는 방법은 Hive UDF·UDAF·UDTF 관련 문서를 함께 참고하세요.