这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
call:udf [2019/12/29 14:57] jinlong [在hive中进行模型调用] |
call:udf [2020/07/12 12:07] (当前版本) |
||
---|---|---|---|
行 116: | 行 116: | ||
<code java> | <code java> | ||
- | package cn.eppdev.mlib.sample.sdk.hive.udf; | + | package cn.eppdev.mlib.sample.hive.udf; |
import org.apache.hadoop.io.Text; | import org.apache.hadoop.io.Text; | ||
行 142: | 行 142: | ||
} | } | ||
</code> | </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 | ||
+ | |||
+ |