在 文章中我简单的谈到了如何使用 编写 UDF 解决实际的问题。我们那个例子里面仅仅是一个很简单的示例里面仅仅引入了 的 sys
包,而这个包是 Python 内置的所有我们不需要担心 Hadoop 集群中的 Python 没有这个包;但是问题来了,如果我们现在需要使用到 numpy
中的一些函数呢假设我们有一个表,表结构和数据如下:
如果想及时了解Spark、Hadoop或者Hbase相关的文章欢迎关注微信公共帐号:
每行数据是一个数字序列,现在我们需要求每行数字的最小值我们使用 Python 编写的代码如下:
这里面使用了 numpy 相关的函数,现在我们来使用这个 UDF:
不幸的是我们的程序运行遇到了问题:
从错误中我们可以看出,集群的 Python 环境并没有 numpy
嘚环境所有出现了 No module named numpy
的异常。这时候我们可以通知集群的维护人员给我们部署好相关的环境但是这个可能很麻烦。不过高兴的是我们其实可以自己部署相关的环境,操作如下:
这次我们顺利的解决了这个问题注意,本文提供的方法只是一种可行的方案并不是推荐大镓都这么使用,正如本文例子里面用到的 anaconda2 包它的大小有 1G 多,如果大家都这么使用势必造成网络带宽的问题所有如果这个包真的很常用,还是得和集群管理员商量部署好
本博客文章除特别声明,全部都是原创!转载本文请加上:转载自