2017-03-21 41 views
0

我知道如何用transformusing创建配置单元udf,但我不能使用sklearn,因为并非hive集群中的所有节点都有sklearn
我有一个anaconda2.tar.gzsklearn,我该怎么办?如何使用python和第三方软件包(如sklearn)创建udf for hive?

+0

一个解决方案是将所有的源代码复制到你的udf。我有一个需要itertools的猪UDF,但我们拥有的Python版本是2.6.6,它没有itertools。所以我查了一下排列的实现,并把它放在我的UDF中。所以不是调用'itertools.permutations',而是调用在我的UDF中定义的'permutations'。如果你需要的功能有很多依赖关系,这可能是不可行的。另一种选择是在每个节点上安装scikit-learn。 – gobrewers14

回答

0

我最近开始研究这种方法,并且我觉得问题并不是要让所有的'hive节点'都在他们身上闪烁(如上所述),我觉得这是一个兼容性问题而不是' sklearn节点可用性'之一。我认为sklearn还没有被设计成以并行算法运行,因此大量的数据可以在短时间内处理。


我试图做的,作为一种方法,就是通过“pyhive”(例如),并实施必要的sklearn库/代码中调用蟒蛇沟通,“蜂巢”。这里粗略的假设,这个'sklearn-hive-python'代码将在每个节点中运行,并在'map-reduce'级别处理数据。 我不能说这是正确的解决方案或正确的方法(但),但这是我可以在搜索某个时间后得出结论。

+0

谢谢。我使用'sklearn'作为蜂巢式地图作业,所以作业之间没有沟通(如减少)。 – sigmoid

+0

你可以通过'spark'来访问hdfs文件,然后你可以使用'spark-sklearn'(https://pypi.python.org/pypi/spark-sklearn/0.2.0)。我宁愿让python直接与hadoop对话,并完成所有必要的map-reduce工作,然后通过spark-sklearn(数据很大并存储在您机器中的某个数据仓库中)处理输出数据。我相信spark-sklearn应该处理数据大小。 –

相关问题