2017-03-21 6 views
0

Ich weiß, wie ein Hive-UDF mit transform und using erstellen, aber ich kann sklearn nicht verwenden, da nicht alle Knoten im Hive-Cluster sklearn hat.
Ich habe eine anaconda2.tar.gz mit sklearn, Was soll ich tun?Wie erstelle ich ein udf für den Bienenstock mit Python mit 3rd-Party-Paket wie Sklearn?

+0

Eine Lösung besteht darin, den gesamten Quellcode in Ihr UDF zu kopieren. Ich hatte eine Pig-UDF, die itertools benötigte, aber die Python-Version, die wir haben, ist 2.6.6, die keine itertools hat. Also habe ich die Implementierung von Permutationen nachgeschlagen und einfach in meine UDF eingefügt. Anstatt "itertools.permutations" zu nennen, habe ich einfach "Permutationen" genannt, die in meiner UDF definiert wurden. Dies ist möglicherweise nicht machbar, wenn die Funktion, die Sie benötigen, viele Abhängigkeiten hat. Eine weitere Option ist die Installation von scikit-learn auf jedem Knoten. – gobrewers14

Antwort

0

Ich habe vor kurzem begonnen, diesen Ansatz zu untersuchen, und ich habe das Gefühl, dass das Problem nicht darin besteht, alle 'Hive Nodes' mit Sklearn zu bekommen (wie Sie oben erwähnt haben), ich glaube, es ist eher ein Kompatibilitätsproblem als ' slearn Knoten Verfügbarkeit 'eins. Ich denke, sklearn ist (noch) nicht so ausgelegt, dass es als paralleler Algorithmus läuft, so dass große Datenmengen in kurzer Zeit verarbeitet werden können.


Was ich versuche als Ansatz zu tun, ist, Python zu ‚Bienenstock‘ bis ‚pyhive‘ zu kommunizieren (zum Beispiel) und implementieren die notwendigen sklearn Bibliotheken/Anrufe innerhalb dieses Code. Die grobe Annahme hier, dass dieser "Sklearn-Hive-Python" -Code in jedem Knoten laufen und sich mit den Daten auf der 'Map-Reduce'-Ebene befassen wird. Ich kann nicht sagen, dass dies die richtige Lösung oder korrekter Ansatz (noch) ist, aber das ist, was ich nach der Suche nach etwas schließen kann.

+0

danke. Ich benutze 'sklearn' für einen Nur-Hive-Map-Job, also gibt es keine Kommunikation zwischen Jobs (wie Reduzieren). – sigmoid

+0

Sie können auf hdfs-Dateien über 'spark' zugreifen und dann können Sie 'spark-sklearn' (https://pypi.python.org/pypi/spark-sklearn/0.2.0) verwenden. Ich würde lieber Python direkt mit hadoop reden lassen und alle notwendigen Map-Reduce-Arbeiten machen und dann arbeite ich an den Ausgabedaten via Spark-sklearn (Daten sind groß und in einigen Data-Warehouse in Ihrer Maschine gespeichert). Ich glaube, Spark-Sklearn sollte sich um die Datengröße kümmern. –

Verwandte Themen