当前位置: 首页 > news >正文

军事最新新闻播报青岛网络优化代理

军事最新新闻播报,青岛网络优化代理,k2 wordpress,西安到北京需要隔离吗文章目录Hive数据仓库——UDF、UDTFUDF:一进一出案例一创建Maven项目,并加入依赖编写代码,继承org.apache.hadoop.hive.ql.exec.UDF,实现evaluate方法,在evaluate方法中实现自己的逻辑打成jar包并上传至Linux虚拟机在hive shell中…

文章目录

  • Hive数据仓库——UDF、UDTF
    • UDF:一进一出
      • 案例一
      • 创建Maven项目,并加入依赖
      • 编写代码,继承org.apache.hadoop.hive.ql.exec.UDF,实现evaluate方法,在evaluate方法中实现自己的逻辑
      • 打成jar包并上传至Linux虚拟机
      • 在hive shell中,使用 ```add jar 路径```将jar包作为资源添加到hive环境中
      • 使用jar包资源注册一个临时函数,fxxx1是你的函数名,'MyUDF'是主类名
      • 使用函数名处理数据
      • 案例二
      • 编写代码,继承org.apache.hadoop.hive.ql.exec.UDF,实现evaluate方法,在evaluate方法中实现自己的逻辑
      • 打成jar包并上传至Linux虚拟机
      • 在hive shell中,使用 ```add jar 路径```将jar包作为资源添加到hive环境中
      • 使用jar包资源注册一个临时函数,fxxx1是你的函数名,'MyUDF'是主类名
      • 使用函数名处理数据
    • UDTF:一进多出
      • 方法一:使用 explode+split
      • 方法二:自定义UDTF
        • 案例一
        • 案例 二

Hive数据仓库——UDF、UDTF

UDF:一进一出

案例一

创建Maven项目,并加入依赖

<dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>1.2.1</version>
</dependency>

编写代码,继承org.apache.hadoop.hive.ql.exec.UDF,实现evaluate方法,在evaluate方法中实现自己的逻辑

package com.liangzai.UDF;import org.apache.hadoop.hive.ql.exec.UDF;public class MyUDF extends UDF {// 自定义UDF 需要继承UDF类,实现evaluate方法public String evaluate(String gender) {// 男 女String resStr = "";resStr = gender.replace("男","boy");resStr = resStr.replace("女","girl");return resStr;}
}

打成jar包并上传至Linux虚拟机

在hive shell中,使用 add jar 路径将jar包作为资源添加到hive环境中

add jar /usr/local/soft/jars/Hive-1.0.jar;

使用jar包资源注册一个临时函数,fxxx1是你的函数名,'MyUDF’是主类名

create temporary function my_udf as 'com.liangzai.UDF.MyUDF';

使用函数名处理数据

select my_udf(gender) as new_gender from students limit 10;
select *,my_udf(gender) as new_gender from students limit 10;

案例二

编写代码,继承org.apache.hadoop.hive.ql.exec.UDF,实现evaluate方法,在evaluate方法中实现自己的逻辑

package com.liangzai.UDF;import org.apache.hadoop.hive.ql.exec.UDF;public class MyUDF1 extends UDF {public String evaluate(String clazz) {// 自定义UDF 需要继承UDF类,实现evaluate方法// 班级String resStr = "";resStr = clazz.replace("一","1");resStr = resStr.replace("二","2");resStr = resStr.replace("三","3");resStr = resStr.replace("四","4");resStr = resStr.replace("五","5");resStr = resStr.replace("六","6");return resStr;}
}

打成jar包并上传至Linux虚拟机

在hive shell中,使用 add jar 路径将jar包作为资源添加到hive环境中

add jar /usr/local/soft/jars/Hive-1.0.jar;

使用jar包资源注册一个临时函数,fxxx1是你的函数名,'MyUDF’是主类名

create temporary function my_udf as 'com.liangzai.UDF.MyUDF1';

使用函数名处理数据

select my_udf(clazz) as new_clazz from students limit 10;
select *,my_udf(clazz) as new_clazz from students limit 10;

UDTF:一进多出

方法一:使用 explode+split

select "key1:value1,key2:value2,key3:value3";
// 结果
key1:value1,key2:value2,key3:value3select split("key1:value1,key2:value2,key3:value3",",");
// 结果
["key1:value1","key2:value2","key3:value3"]select explode(split("key1:value1,key2:value2,key3:value3",","));
// 结果
key1:value1
key2:value2
key3:value3select t1.kv from (select explode(split("key1:value1,key2:value2,key3:value3",",")) as kv) t1;
// 结果
key1:value1
key2:value2
key3:value3select split(t1.kv,":")[0] as key,split(t1.kv,":")[1] as value from (select explode(split("key1:value1,key2:value2,key3:value3",",")) as kv) t1;
// 结果
key1	value1
key2	value2
key3	value3

方法二:自定义UDTF

案例一

  • 代码
package com.liangzai.UDF;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;public class MyUDTF extends GenericUDTF {@Override// initialize方法,会在UDTF被调用的时候执行一次public StructObjectInspector initialize(StructObjectInspector argOIs) throws UDFArgumentException {ArrayList<String> fieldNames = new ArrayList<String>();ArrayList<ObjectInspector> fieldOIs = new ArrayList<ObjectInspector>();fieldNames.add("col1");fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);fieldNames.add("col2");fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);return ObjectInspectorFactory.getStandardStructObjectInspector(fieldNames,fieldOIs);}@Overridepublic void process(Object[] args) throws HiveException {// "key1:value1,key2:value2,key3:value3"for (Object arg : args) {String[] kvSplit = arg.toString().split(",");for (String kv : kvSplit) {String[] splits = kv.split(":");String key = splits[0];String value = splits[1];ArrayList<String> kvList = new ArrayList<>();kvList.add(key);kvList.add(value);forward(kvList);}}}@Overridepublic void close() throws HiveException {}
}
  • 添加jar资源:
add jar /usr/local/soft/jars/Hive-1.0.jar;
  • 注册udtf函数:
create temporary function my_udtf as 'com.liangzai.UDF.MyUDTF';
  • SQL:
select my_udtf("key1:value1,key2:value2,key3:value3","key1:value1,key2:value2,key3:value3");

案例 二

  • 数据
create table udtfData(id string,col1 string,col2 string,col3 string,col4 string,col5 string,col6 string,col7 string,col8 string,col9 string,col10 string,col11 string,col12 string
)row format delimited fields terminated by ',';
a,1,2,3,4,5,6,7,8,9,10,11,12
b,11,12,13,14,15,16,17,18,19,20,21,22
c,21,22,23,24,25,26,27,28,29,30,31,32
  • 代码
package com.liangzai.UDF;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;public class MyUDTF2 extends GenericUDTF {@Overridepublic StructObjectInspector initialize(StructObjectInspector argOIs) throws UDFArgumentException {ArrayList<String> fieldNames = new ArrayList<String>();ArrayList<ObjectInspector> fieldOIs = new ArrayList<ObjectInspector>();fieldNames.add("hour");fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);fieldNames.add("value");fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);return ObjectInspectorFactory.getStandardStructObjectInspector(fieldNames,fieldOIs);}@Overridepublic void process(Object[] args) throws HiveException {int hour = 0;for (Object arg : args) {String value = arg.toString();ArrayList<String> hourValueList = new ArrayList<>();hourValueList.add(hour+"时");hourValueList.add(value);forward(hourValueList);hour += 2;}}@Overridepublic void close() throws HiveException {}
}
  • 添加jar资源:
add jar /usr/local/soft/jars/Hive-1.0.jar;
  • 注册udtf函数:
create temporary function my_udtf as 'com.liangzai.UDF.MyUDTF2';
  • SQL:
select select id,hours,value from udtfData lateral view my_udtf(col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12) t as hours,value;

到底啦!关注靓仔学习更多的大数据!( •̀ ω •́ )✧

http://www.wooajung.com/news/34908.html

相关文章:

  • 重新下载一个微信seo培训公司
  • 罗湖网站建设优化精准营销的三要素
  • 马蜂窝网站怎么做网络广告投放方案
  • 中国建设官网首页汕头seo不错
  • 宝鸡专业做网站百度seo标题优化软件
  • 简历旅游网站开发经验百度app下载官方免费下载最新版
  • 怎么用电脑windows做网站杭州搜索推广公司
  • 学校网站建设的优势和不足新闻博客软文自助推广
  • iis网站无法启动网络营销技能大赛优秀作品
  • 上海哪个区买房最好百度seo
  • 自己做网站步骤广告买卖网
  • 海报图片素材win优化大师官网
  • easyui做门户网站网站优化外包价格
  • 企业网站建站 广州 视频360地图怎么添加商户
  • 网站正在建设中中文网站安全检测平台
  • asp新闻发布网站模板怎么建网站教程图解
  • 深圳燃气公司上班时间seo顾问张智伟
  • 人才网站建设方案网店seo名词解释
  • 网站建设788gg网站seo查询站长之家
  • 网站开发时遇不到算法今日十大热点新闻事件
  • 昆明网站建设系统今日国内新闻大事件
  • 水资源论证网站建设公众号怎么推广
  • 建立一个公司的网站seo关键词排名优化价格
  • 福建石狮有做网站的没地推团队如何收费
  • ui做的好的网站有哪些网页设计是干嘛的
  • 建站用什么平台好武汉seo顾问
  • 西安做网站优化的公司百度账号登录不了
  • 河间市做网站价格网站seo主要是做什么的
  • 常州外贸集团 网站建设百度搜索量查询
  • 宁波中科网站建设有限公司长春网站排名提升