程序员的自我修养
Home » 文章归档 » 2015年五月

Hive Custom UDF

1条评论5,834次浏览

需求

最近有这么一个需求要实现,由于话单中的区号不准确,需要根据区号-号段对应表来刷新话单中的区号信息。业务逻辑类似如下:

就是将号码与区号-号段对应表中的记录来对比,返回该号码所属于的号码段的区号。在oracle中测试了下,不加limit 1是好使的。但是放到Hive中却一直报错,不认这样的语法。尝试其它方法无果,最后决定用UDF实现。

定制UDF

最大的问题

如何在UDF中读入区号-号段对应表的数据?

Hive的UDF类没有类似setup()这样的在开头调用一次的方法,只是单纯写evaluate()方法来实现逻辑,显然不能在evaluate()方法中读入区号-号段对应表的数据,否则每一次调用该方法都会重新读一次数据,开销太大,方法也太挫。GenericUDF当中有initialize()方法,但太过复杂,没法应付这次紧急需求。
(更多…)

分类:Apache Hive
标签:

CDH集群常用管理操作

3条评论5,183次浏览

调整replication

随着业务数据的不断增加,hdfs可用空间逐渐减少。经过再三考虑决定将集群的备份数量由2变为1,也就是不在备份,每个数据块只有唯一的一份存档。

当初备份数由3调成2时只是简单的将dfs.replication由3变成了2,然后分发配置重启集群。记得当时通过hdfs dfsadmin -report查看hdfs占用大小发现大小一直在减少。心想着hdfs还挺智能的,知道备份数减少了,自己去删除多余的副本了。

结果这次将dfs.replication由2变成了1后发现hdfs空间一直保持不变。难道上次的记忆出错了,hdfs其实并不会自己去调整备份数?

后来查了相关资料,证实hdfs确实不会根据dfs.replication参数来自动调整备份数。这个参数是给client端用的,当有新文件写入时,会根据该参数确定复制几份,但集群已有的文件备份数不受该参数的影响。

于是使用命令hadoop fs -setrep -R 1 /将集群全部文件的备份数变为1。再次查看集群空间大小,发现下降了一半。成功。
(更多…)

分类:CDH
标签:

Hive row_number()使用方法

0条评论7,768次浏览

需求

根据短信月详单实现Top 10短信联系人的功能。就是计算出每个号码发送短信最多的10个号码(由于电信业务规则,接收到的短信不会产生记录,所以只能计算发送短信最多的10个号码)。

数据全部通过datax从oracle导入到hdfs上,然后通过hive外部表的形式进行管理。

第一步

初步一看貌似用原生MapReduce比较好解决,毕竟以前用MR处理过类似的需求。但是最近刚刚建议老总将能转移到hive上用sql实现的业务全部转移过来,于是想想还是尝试用sql实现吧。

首先先试试根据发送短信号码、接收短信号码group来计算每个号码对的短信次数。

(更多…)

分类:Apache Hive
标签:

SSH隧道

1条评论2,753次浏览

最近跟同事学了一招SSH隧道,感觉十分牛掰。在此记录。

适用场景

生产环境中的集群往往在一个局域网中,而该局域网只能通过某台特定的堡垒机来访问。这样的网络环境下可以通过SSH隧道将一些端口隐射出来,比如CM的7180和HUE的8888端口,这样就可以在本机上通过浏览器来访问CM和HUE了。

命令示例与解释

上述命令意思是通过接口机(ssh端口为8282)将master-ip机器的7180端口隐射到本机的7180端口,这样可以通过访问http://localhost:7180来访问master-ip机器的7180端口。

参数详解

  • -C Enable compression. 压缩数据传输。
  • -f Fork into background after authentication. 后台认证用户/密码,通常和-N连用,不用登录到远程主机。
  • -N Do not execute a shell or command. 不执行脚本或命令,通常与-f连用。
  • -g Allow remote hosts to connect to forwarded ports. 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
  • -L port:host:hostport. 将本地机(客户机)的某个端口转发到远端指定机器的指定端口。
  • -p port. 指定跳转机器的ssh端口号。

其它

可通过ps -ef|grep ssh 来查看ssh隧道的的进程号,kill掉即可关闭该隧道。

隧道若长期闲置也会出现超时,此时kill掉再重新连接吧。

分类:杂七杂八
标签:
11
profile
  • 文章总数:81篇
  • 评论总数:241条
  • 分类总数:32个
  • 标签总数:45个
  • 运行时间:1254天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论
  • Anonymous: :?: :razz: :sad:
  • Anonymous: 牛
  • Anonymous: 楼主你好,我偶尔也会 遇到Reconnect due to socket error: java.nio.channels.ClosedCha...
  • Anonymous: sdfs
  • Anonymous: :arrow: :neutral: :cry:
  • Anonymous: java.io.NotSerializableExcepti on: DStream checkpointing has been enabled but the DStreams with their...
  • wick: HI,请问一下,U,S,V得到 ,怎么得到近似矩阵 (用spark java),谢谢。
  • Michael Whitaker: Thank you for this blog, it was very helpful in troubleshooting my own issues. It seems that no...
  • Anonymous: :mad:
  • Anonymous: :???:
  • Anonymous: :mad: :mad: :mad:
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • Anonymous: :razz: :evil: :grin:
  • 张瑞昌: 有很多,比较常见的是 Jacob迭代法,一次迭代O (n^3),迭代次数不清楚 ...
  • Anonymous: :mrgreen:
  • lc277: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮 忙发给我吗