Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python和第三方软件包(如sklearn)为配置单元创建udf?_Python_Hive_Package_Udf - Fatal编程技术网

如何使用python和第三方软件包(如sklearn)为配置单元创建udf?

如何使用python和第三方软件包(如sklearn)为配置单元创建udf?,python,hive,package,udf,Python,Hive,Package,Udf,我知道如何使用transform和using创建蜂巢udf,但我不能使用sklearn,因为蜂巢集群中并非所有节点都有sklearn 我有一个anaconda2.tar.gz和sklearn,我该怎么办?我最近开始研究这种方法,我觉得问题不在于让所有的“蜂巢节点”都有sklearn(正如你上面提到的),我觉得这是一个兼容性问题,而不是“sklearn节点可用性”问题。我认为sklearn还没有被设计成一个并行算法,以便在短时间内处理大量数据 作为一种方法,我试图通过“pyhive”(例如)将p

我知道如何使用
transform
using
创建蜂巢udf,但我不能使用
sklearn
,因为蜂巢集群中并非所有节点都有
sklearn


我有一个
anaconda2.tar.gz
sklearn
,我该怎么办?

我最近开始研究这种方法,我觉得问题不在于让所有的“蜂巢节点”都有sklearn(正如你上面提到的),我觉得这是一个兼容性问题,而不是“sklearn节点可用性”问题。我认为sklearn还没有被设计成一个并行算法,以便在短时间内处理大量数据


作为一种方法,我试图通过“pyhive”(例如)将python与“hive”通信,并在代码中实现必要的sklearn库/调用。这里的粗略假设是,“sklearn-hive-python”代码将在每个节点中运行,并在“map-reduce”级别处理数据。
我不能说这是正确的解决方案或正确的方法(目前),但这是我在寻找某个时间后得出的结论

一种解决方案是将所有源代码复制到udf。我有一个需要itertools的pig UDF,但是我们的python版本是2.6.6,它没有itertools。所以我查了一下置换的实现,然后把它放在我的UDF中。因此,我没有调用
itertools.permutations
,而是调用了UDF中定义的
permutations
。如果您需要的函数有许多依赖项,那么这可能不可行。另一个选项是在每个节点上安装scikit learn。谢谢。我将
sklearn
用于仅配置单元映射作业,因此作业之间没有通信(如reduce)。您可以通过“spark”访问hdfs文件,然后可以使用“spark sklearn”()。我宁愿让python直接与hadoop对话,完成所有必要的map reduce工作,然后通过spark sklearn处理输出数据(数据很大,存储在您机器中的某个数据仓库中)。我相信spark sklearn应该考虑数据的大小。