2017-03-21 15 views
0

私はtransformusingでハイブudfを作成する方法を知っていますが、sklearnを使用することはできません。ハイブ・クラスタ内のすべてのノードがsklearnであるとは限りません。
anaconda2.tar.gzsklearnがあります。どうすればよいですか?sklearnのようなサードパーティのパッケージでpythonを使ってハイブ用のudfを作成するには?

+0

解決策の1つは、すべてのソースコードをあなたのudfにコピーすることです。私はitertoolsが必要なブタのUDFを持っていましたが、私たちが持っているPythonのバージョンはitertoolsを持たない2.6.6です。だから私は順列の実装を見て、それを私のUDFに入れました。そこで 'itertools.permutations'を呼び出すのではなく、私のUDFで定義された' permutations'を呼びました。必要な機能に多くの依存関係がある場合、これは実現不可能かもしれません。別のオプションは、各ノードにscikit-learnをインストールすることです。ありがとう。 – gobrewers14

答えて

0

私は最近、このアプローチを検討し始めました。問題は、(上記のように)「ハイブノード」がそれらの上にsklearnを持っているということではないと感じました。スケルランノードの可用性 ' Sklearnは、(まだ)大量のデータを短時間で処理できる並列アルゴリズムとして実行するようには設計されていないと思います。

私が何をしようとしている

は、アプローチとして、(例えば)「pyhive」を介して「ハイブ」にパイソンを伝え、そのコード内で必要なsklearnライブラリ/呼び出しを実装することです。この 'sklearn-hive-python'コードが各ノードで実行され、 'map-reduce'レベルでデータを扱うという大まかな仮定。 これは適切な解決方法であるとは言えませんが(まだ)、これはいつか検索してから結論づけることができます。

+0

ありがとう。ハイブマップのみのジョブには 'sklearn'を使用しますので、ジョブ間の通信はありません(reduceなど)。 – sigmoid

+0

あなたは 'spark'を介してhdfsファイルにアクセスでき、 'spark-sklearn'(https://pypi.python.org/pypi/spark-sklearn/0.2.0)を利用することができます。むしろ、私はむしろpythonを直接hadoopに話して、必要なmap-reduce作業をしてから、spark-sklearn(データが大きく、あなたのマシンのデータウェアハウスに格納されている)を介して出力データを処理します。私はspark-sklearnがデータサイズを処理すべきだと考えています。 –

関連する問題