跳至内容
EPPDEV-MLIB
用户工具
登录
站点工具
搜索
工具
显示页面
修订记录
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
call:udf
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== HIVE UDF方式进行调用 ====== 使用hive udf进行模型调用,有以下两种方案: * 使用eppdev-mlib-sdk-hive-udf原生方案,在进行udf调用的时候需要首先输入 网关地址url、模型编码信息 * 使用自定义udf,在进行调用的时候可以配置无需输入网关地址、模型编码信 ===== 使用原生方案 ===== ==== 下载相应的软件包 ==== 目前eppdev-mlib提供的原生udf支持hive1.2, 2.3, 3.1三个版本,需要分别下载不同 的jar包来完成模型的调用: * hive1.2: eppdev-mlib-sdk-hive-udf12.jar * hive2.3: eppdev-mlib-sdk-hive-udf23.jar * hive3.1: eppdev-mlib-sdk-hive-udf31.jar ==== 上传jar到hdfs中 ==== 以hive2.3为例: <code shell> hdfs dfs put eppdev-mlib-sdk-hive-udf23.jar /user/udf/hive/ </code> ==== 在hive中创建自定义函数 ==== <code sql> 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'; </code> ==== 在hive中进行模型调用 ==== 进行hive调用可以有两种方式: - 输入3个参数(网关地址、模型编码、请求数据json),可以获取到全量的模型输入 - 输入4个参数(网关地址、模型编码、请求json和所需的输出项),可以获取指定的输出项 方法1: 三个参数获取结果json <code sql> 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; </code> 输出结果为全量的json: <code json> { "probability(Setosa)": 1.0, "probability(Virginica)": 0.0, "probability(Versicolor)": 0.0, "variety": "Setosa" } </code> 方法2:输入4个参数,直接获取具体结果 <code sql> 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; </code> 输出结果为veriety结果,如:Setosa ===== 使用自定义udf ===== ==== 程序编码 ==== 以HIVE2.3为例 === POM依赖 === <code xml> <dependencies> <dependency> <groupId>cn.eppdev.mlib</groupId> <artifactId>eppdev-mlib-sdk-hive-udf23</artifactId> <version>1.0.0</version> </dependency> </dependencies> </code> === java === <code java> package cn.eppdev.mlib.sample.hive.udf; import org.apache.hadoop.io.Text; import org.apache.hadoop.hive.ql.exec.UDF; import cn.eppdev.mlib.sdk.hive.udf.EppdevMlibCalcUDF; public class EppdevMlibTest01UDF extends EppdevMlibCalcUDF{ // 网关地址 static final CONSUMER_BASIC_URL = "http://localhost:11541/consumer"; // 模型编码 static final MODEL_CODE = "test-01"; public Text evaluate(String postJson) { return eppdevMlibCalc(CONSUMER_BASIC_URL, MODEL_CODE, postJson); } public Text evaluate(String postJson, String resultField){ return eppdevMlibCalc(CONSUMER_BASIC_URL, MODEL_CODE, postJson, resultField); } } </code> ==== 上传jar包到hdfs中 ==== <code shell> hdfs dfs put eppdev-mlib-sdk-hive-udf23.jar /user/udf/hive/ hdfs dfs put eppdev-mlib-sample-hive-udf.jar /user/udf/hive </code> > 上述命令中eppdev-mlib-sample-hive-udf.jar为自定义udf编译后的jar包 ==== hive中创建udf ==== <code sql> 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_test01 as 'cn.eppdev.mlib.sdk.hive.udf.EppdevMlibCalcUDF' using jar 'hdfs:///user/udf/hive/eppdev-mlib-sdk-hive-udf23.jar', jar 'hdfs:///user/udf/hive/eppdev-mlib-sample-hive-udf.jar'; </code> ==== 在hive中进行模型调用 ==== 此时进行hive调用可以有两种方式: - 输入1个参数(请求数据json),可以获取到全量的模型输入 - 输入2个参数(请求json和所需的输出项),可以获取指定的输出 方法1:输入1个参数,获取json结果 <code sql> select eppdev_mlib_calc_test01( 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; </code> 输出结果为全量json <code json> { "probability(Setosa)": 1.0, "probability(Virginica)": 0.0, "probability(Versicolor)": 0.0, "variety": "Setosa" } </code> 方法2:输入2个参数,获取具体结果 <code sql> select eppdev_mlib_calc( 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; </code> 输出结果为veriety结果,如:Setosa
call/udf.txt
· 最后更改: 2020/07/12 12:07 (外部编辑)
页面工具
显示页面
修订记录
反向链接
回到顶部