这是本文档旧的修订版!
使用hive udf进行模型调用,有以下两种方案:
网关地址url、模型编码信息
目前eppdev-mlib提供的原生udf支持hive1.2, 2.3, 3.1三个版本,需要分别下载不同 的jar包来完成模型的调用:
以hive2.3为例:
hdfs dfs put eppdev-mlib-sdk-hive-udf23.jar /user/udf/hive/
CREATE FUNCTION eppdev_to_json AS 'cn.eppdev.mlib.sdk.hive.udf.EppdevMlibToJsonUDF' USING jar 'hdfs://user/udf/hive/eppdev-mlib-sdk-hive-udf23.jar'; CREATE FUNCTION eppdev_mlib_calc AS 'cn.eppdev.mlib.sdk.hive.udf.EppdevMlibCalcUDF' USING jar 'hdfs://user/udf/hive/eppdev-mlib-sdk-hive-udf23.jar';
进行hive调用可以有两种方式:
方法1: 三个参数获取结果json
SELECT eppdev_mlib_calc( 'http://localhost:11541/consumer', 'test-01', eppdev_to_json( 'sepal.width', sepal_with, 'sepal.height', sepal_height, 'petal.width', petal_width, 'petal.height', petal_height ) ) AS full_result FROM iris_data;
输出结果为全量的json:
{ "probability(Setosa)": 1.0, "probability(Virginica)": 0.0, "probability(Versicolor)": 0.0, "variety": "Setosa" }
方法2:输入4个参数,直接获取具体结果
SELECT eppdev_mlib_calc( 'http://localhost:11541/consumer', 'test-01', eppdev_to_json( 'sepal.width', sepal_with, 'sepal.height', sepal_height, 'petal.width', petal_width, 'petal.height', petal_height ), 'variety' ) AS variety FROM iris_data;
输出结果为veriety结果,如:Setosa