hive udaf 支持传入所有参数吗

作者&投稿:敞隶 (若有异议请与网页底部的电邮联系)
hive自定义函数可以多行输入,然后多行输出么?就是UDAF,UATF写一起~

多行输入,

Java来实现Hive的写法

package jsl.hive.udf;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

public final class DomainRoot extends UDF {
public Text evaluate(Text s) {
if (s == null) {return null;}
String tmp = s.toString();
tmp = this.getDomainRoot(tmp);
return new Text(tmp);
}

private String getDomainRoot(String domain) {
throw NoneImplementException("xxxx");
}
}

如果Java的UDF需要当成常用的,不用每次add可以注册到Hive中,
ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java中加入
registerUDF("domain_root", UDFParseUrl.class, false);并重新编译hive即可


下面来说说重点,通过Streaming用Python来写处理。
关于Streaming的基础内容:

约束:首先必须add file到hive中(当python中引用了其他如自己写的模块时,也需要一并add进去)
其次非常不幸,在单独的一个查询中,不能够使用UDAF的函数如sum()
再次不得为中间结果数据使用cluster by或distribute by

注意:对于优化查询,使用cluster by或distribute by 和sort by一起非常重要

1.首先添加jar包。hive> ADD JAR /dir/dir/*****.jar; 2.创建函数hive> CREATE TEMPORARY FUNCTION myfunction AS 'com.example.MyFunction'; 永久加载: 在.hiverc文件中添加相关语句!


关岭布依族苗族自治县13154052699: hive extends udf和extends genericudf的区别 -
劳吴爱西: 一般来说你要是写的udf(例如floor,regexp_extract函数等)的参数和返回值只需要支持简单类型,例如 int double string这些类型,继承udf即可.如果你的udf(例如size,collect_set函数)参数和返回值需要用到复杂类型,例如array map struct等,需要使用genericudf,这个里边需要进行参数类型的判断和获取等

关岭布依族苗族自治县13154052699: 深入浅出PYTHON怎么样 -
劳吴爱西: Head First 系列的书籍一直饱受赞誉,这本也不例外.Head First Python主要讲述了Python 3的基础语法知识以及如何使用Python快速地进行Web、手机上的开发. 下面是该书每章结束部分的知识摘要:...

关岭布依族苗族自治县13154052699: select和epoll的区别 -
劳吴爱西: epoll跟select都能提供多路I/O复用的解决方案.在现在的Linux内核里有都能够支持,其中epoll是Linux所特有,而select则应该是POSIX所规定,一般操作系统均有实现.网上现在关于这两者不同的介绍已经到处都是了.我这里也不能多说出什么...

关岭布依族苗族自治县13154052699: java 方法可以传入多少个参数 -
劳吴爱西: java的方法可以动态传入参数,比如methodA(String... values),它相当于传进入一个values的数组,因此在你的内存支持的情况下,参数个数可以是无限个的.

关岭布依族苗族自治县13154052699: 初二上学期物理选择题100道 -
劳吴爱西: 一、选择题 1、下列关于声现象的说法中正确的是(A ) A悦耳动听的歌声是由歌唱家的声带振动发生的B声音传播不需要介质,真空也能传声 C声音在钢铁中的传播速度小于在空气中的传播速度 D声...

关岭布依族苗族自治县13154052699: sql中用一个参数如何向存过传入一组值,且可单个调用, -
劳吴爱西: 用xml传值这说法真不错!不过据我所知,declare @parameters xml;但是不能由外部传入,而且好象不能在表外使用.所以考虑使用这样的方式:传入一个参数,按一定的分隔符传递,但这种方式也有却点.参数长度有限制,还有一种方法叫...

关岭布依族苗族自治县13154052699: mysql 存储过程支持传入数组参数么 -
劳吴爱西: 没试过往里面传数组,一般都是多传几个参数,把几个参数放入SqlParameter[]中,然后cmd.Parameters.AddRange(pars); 创建方法: SqlParameter[] paras = new SqlParameter[]{ new SqlParameter("@PageIndex","ccc"), new ...

关岭布依族苗族自治县13154052699: 如何使用webinvoke方法传入WCF其余全身多个参数 -
劳吴爱西: 既然是REST风格了,就应该使用Url的方式来处理资源,如果需要传递参数就使用Service/Action/id这种形式来传,这里id是参数名了,如:[WebInvoke(Method = "PUT", RequestFormat = WebMessageFormat.Xml, UriTemplate = "{id}")] ...

关岭布依族苗族自治县13154052699: 用ACCESS中的查寻,可以像SQL Server一样用存储过程么? -
劳吴爱西: 我们已经熟悉在 ASP 中通过调用 SQL Server 存储过程来执行数据库操作,不过大家是否知道,在桌面级数据库 Access 中,我们也能够创建并使用“存储过程”?Acc...

关岭布依族苗族自治县13154052699: 大数据量 如何快速传到云上 -
劳吴爱西: 云计算和大数据目前都是热门话题,如何把两者结合起来即在云上实现大数据项目,这是一个新的实践领域.资深数据专家David Gillman根据自己的经验,列举了云上大数据方案需要考虑的基本要素,包括对数据构建实时索引、自由模式搜索与...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网