https://issues.apache.org/jira/browse/HIVE-2573

Hive 에서 UDF 를 관리하는 FunctionRegistry 클래스는 singleton 으로 하나만 생성되며 HiveServer 와 같이 클라이언트/서버 방식으로 사용하는 경우라면 결과적으로 모든 클라이언트가 하나의 registry 를 share 하게 된다. Hive 에는 UDF 를 등록/제거하는 API 를 제공하고 있는데, 이는 누군가가 UDF 를 재정의 하면 이것이 모든 클라이언트에게 반영된다는 것을 의미한다.

당연히 말도 안되는 문제이고 hive-0.9 시절부터 패치를 만들었지만, 그동안 아무도 관심을 안 가져서 묻혀있던 이슈의 하나이다. 2011 년 11월에 등록했으니 무려 3년 가까이 된..

기본적으로 system function 용 registry 와 session registry 를 따로 만들어 create/drop temporary function 는 session registry 를, create/drop function 은 system registry 를 수정하는 것으로 패치는 엄청 크지만 컨셉도 간단하고 명확하며 구현도 어려울 것이 없음. 

그러나 그동안 permanent function(HIVE-6047) 이라는 요상한 기능이 create/drop function 문법을 먼저 차지해 버리면서 이대로 커밋하는 것이 불가능하게 되었다. 이게 제대로 된 spec 도 없이 대충 만들어 지다 보니 만든 사람도 이게 뭔지 제대로 모르는 것 같음. permanent function 이라는 이름부터가 말도 안되는 것으로, Hortonworks 가 망친 것 중 하나로 꼽을 수 있을 듯.

여튼 이 똥같은 코드와 의미를 새로 정의하느라 일주일 정도 걸린 듯.

신고
Posted by navis94
◀ PREV : [1] : [2] : [3] : [4] : [5] : [6] : [7] : [8] : [9] : [10] : [···] : [31] : NEXT ▶

카테고리

분류 전체보기 (31)
Apache Hive (29)

최근에 달린 댓글

최근에 받은 트랙백

태그목록

달력

«   2017/09   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

티스토리 툴바