这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
call [2019/12/29 14:46] jinlong [环境配置] |
call [2020/07/12 12:07] (当前版本) |
||
|---|---|---|---|
| 行 150: | 行 150: | ||
| ===== HIVE 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 | ||
| + | |||
| + | |||