如何使用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应该考虑数据的大小。