案例要求

java编写
| package udtf; |
| |
| import org.apache.hadoop.hive.ql.exec.UDFArgumentException; |
| import org.apache.hadoop.hive.ql.metadata.HiveException; |
| import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF; |
| import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; |
| import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory; |
| import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; |
| import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| public class MyExplode extends GenericUDTF { |
| |
| @Override |
| public StructObjectInspector initialize(StructObjectInspector argOIs) throws UDFArgumentException { |
| List<String> columnNames = new ArrayList<String>(); |
| columnNames.add("user"); |
| List<ObjectInspector> objectInspectors = new ArrayList<ObjectInspector>(); |
| objectInspectors.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector); |
| return ObjectInspectorFactory.getStandardStructObjectInspector(columnNames, objectInspectors); |
| } |
| |
| public void process(Object[] args) throws HiveException { |
| String str = args[0].toString(); |
| String split = args[1].toString(); |
| String[] strings = str.split(split); |
| for (String s : strings) { |
| ArrayList<String> list = new ArrayList<String>(); |
| list.add(s); |
| forward(list); |
| } |
| } |
| |
| public void close() throws HiveException { |
| |
| } |
| } |
shell
| hive (default)> create temporary function myexplode as "udtf.MyExplode" using jar "hdfs://node1:9000/hive_function-1.0-SNAPSHOT.jar"; |
| Added [/tmp/10de4466-6601-49b1-b749-8b5c8c2809b2_resources/hive_function-1.0-SNAPSHOT.jar] to class path |
| Added resources: [hdfs://node1:9000/hive_function-1.0-SNAPSHOT.jar] |
| OK |
| Time taken: 5.442 seconds |
| |
| |
| hive (default)> create table a(name string); |
| OK |
| Time taken: 1.046 seconds |
| |
| |
| hive (default)> insert into table a values("zs_ls_ww"),("ww_ml_wb"); |
| |
| |
| hive (default)> select myexplode(name, "_") from a; |
| OK |
| user |
| zs |
| ls |
| ww |
| ww |
| ml |
| wb |
| Time taken: 1.138 seconds, Fetched: 6 row(s) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?