1.一種hive持久化函數(shù)的控制方法,其特征在于:該方法包括以下步驟:
(1)修改hive的源代碼,以便在不指定數(shù)據(jù)庫域名時,使hive的讀取和存儲UDF信息的操作指向default數(shù)據(jù)庫;
(2)優(yōu)化hive的部署;
(3)建立跨庫UDF:在hive中的任意一個數(shù)據(jù)庫下,用create function建立跨庫UDF。
2.根據(jù)權利要求1所述的hive持久化函數(shù)的控制方法,其特征在于:所述步驟(1)中,首先修改類FunctionRegistry中getFunctionInfoFromMetastore函數(shù)和getFunctionInfo,將其中的dbName=SessionState.get().getCurrentDatabase().toLowerCase()替換為dbName=default;再修改類FunctionUtils類中的getQualifiedFunctionNamePart函數(shù),將其中的String dbName=SessionState.get().getCurrentDatabase()替換為dbName=default。
3.根據(jù)權利要求2所述的hive持久化函數(shù)的控制方法,其特征在于:所述步驟(2)中,將修改好的hive文件中的ql工程用mvn編譯成jar包,在含有pom.xml的項目路徑下執(zhí)行mvn package,生成包含依賴的jar文件,然后用該jar包替換機器上原有的jar包。
4.根據(jù)權利要求3所述的hive持久化函數(shù)的控制方法,其特征在于:所述步驟(3)中,在任意數(shù)據(jù)庫下,創(chuàng)建UDF名稱,并通過指定已經(jīng)上傳到集群中jar包的一個類完成該UDF的定義,從而建立跨庫訪問的UDF。
5.根據(jù)權利要求4所述的hive持久化函數(shù)的控制方法,其特征在于:該方法還包括步驟(4),在創(chuàng)建UDF時,如果添加數(shù)據(jù)庫域名前綴,則UDF建立在該數(shù)據(jù)庫下。
6.一種hive持久化函數(shù)的控制系統(tǒng),其特征在于:該系統(tǒng)包括:
hive的源代碼修改模塊,其配置來檢查輸入的參數(shù)是否合法;
部署優(yōu)化模塊,其配置來優(yōu)化hive的部署;
跨庫UDF建立模塊,其配置來在hive中的任意一個數(shù)據(jù)庫下,用create function建立跨庫UDF。