shark on yarn udf的使用
来源:互联网 发布:人物杂志 知乎 编辑:程序博客网 时间:2024/05/02 01:28
shark udf好称跟hive完全兼容,今天尝试了一下,尚未遇到问题。
参考资料[1]中是基于hadoop 1的,这里要在基于hadoop2的解决同样的问题。
问题
topk的经典问题,举例如下
源数据
100 10200 12300 33100 4100 8200 20300 31300 3400 4200 2
要的top2如下
100 10100 8200 20200 12300 33300 31400 4
解决方法
1. udf
2. distribute by and sort by
udf编写
源码
package com.example.hive.udf;import org.apache.hadoop.hive.ql.exec.UDF;public final class Rank extends UDF{ private int counter; private String last_key; public int evaluate(final String key){ if (!key.equalsIgnoreCase(this.last_key)) { this.counter = 1; this.last_key = key; } return this.counter++; }}编写Makefile,方便一个make命令编译生成jar问题,这里没有用流行的mvn,感觉用Makefile更简介些
UDF_CLASSPATH := $(addprefix ${HADOOP_HOME}/share/hadoop/mapreduce/,hadoop-mapreduce-client-core-2.2.0.jar \ hadoop-mapreduce-client-common-2.2.0.jar \ hadoop-mapreduce-client-jobclient-2.2.0.jar)UDF_CLASSPATH += $(addprefix ${HADOOP_HOME}/share/hadoop/common/,hadoop-common-2.2.0.jar)UDF_CLASSPATH += $(addprefix ${HIVE_HOME}/lib/,hive-exec-0.11.0.jar)UDF_CLASSPATH := $(shell echo ${UDF_CLASSPATH} | tr -s ' ' ':')JAR := jarJAVAC := javacCLASSDIR := class__mkdir := $(shell for i in ${CLASSDIR}; do [ -d $$i ] || mkdir -p $$i; done)SRC := $(wildcard *.java)TARGET := $(patsubst %.java,%.jar,${SRC}).PHONY: all clean all: ${TARGET}${TARGET}:%.jar:%.java ${JAVAC} -cp ${UDF_CLASSPATH} -d ${CLASSDIR} $< ${JAR} -cf $@ -C ${CLASSDIR} .clean: ${RM} -r ${TARGET} ${CLASSDIR}
make生成Rank.jar,启动shark,依次执行下面命令
add jar Rank.jar;create temporary function myrank as "com.example.hive.udf.Rank";select key,val from (select key,val,myrank(key) r from (select key,val from rank distribute by key sort by key, val desc) t1) t2 where t2.r < 3;OK100 10100 8200 20200 12300 33300 31400 4Time taken: 1.093 seconds
可见shark的内存计算还是比较快的。
参考资料
[1] http://www.cnblogs.com/Torstan/p/3423859.html
0 0
- shark on yarn udf的使用
- Spark On Yarn中spark.yarn.jar属性的使用
- spark on yarn的cpu使用
- spark on yarn的cpu使用
- Ochadoop之shark、spark on yarn搭建[转自 AIMP平台wiki]
- spark on yarn的理解
- spark on yarn 的安装
- Spark on yarn和Hadoop on yarn的区别
- shark使用oracle9i的安装
- 使用Shark的JSPClient客户端
- udf (MapObjectInspector的使用)
- Hive中UDF的使用
- sparkSQL中UDF的使用
- sparkSQL中UDF的使用
- sparkSQL中udf的使用
- SparkSQL下UDF的使用
- Shark使用
- 编写hive udf和使用hive udf:hue的hive界面中使用hive udf函数、oozie使用hive udf函数、hive命令行使用udf函数
- STM32外部中断详解
- UVA - 673 - Parentheses Balance
- ubuntu关闭iptables
- java MD5
- 学习不能急于求成
- shark on yarn udf的使用
- UVA 11020 - Efficient Solutions
- JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)
- 用文件保存的学生名单
- The Swift Programming Language手册下载
- php中mysql数据库连接的三种常用的方法
- 【ATL/DLL】VS2005 互发消息
- Java类的初始化顺序 (静态变量、静态初始化块、变量 )
- phpmyadmin出现空密码登录被禁止 (参见 允许空密码)的解决办法(转)