2016-08-11 12 views
3

私は、ローカルサーバからPythonスクリプトを使用して長い(〜10時間)ハイブクエリを実行しました。私のターゲットハイブサーバーはawsクラスタにあります。リモートマシンから長時間実行されるハイブクエリを実行する

私は両方のケースで( ' <command> ')を実行、 pyhs2を使用して、それを実行するために

paramiko、exec_command(' ハイブ-e "<command>"')

を試してみた

私のクエリはハイブサーバーで実行され、正常に完了します。問題は正常にクエリを完了した後でさえ私の親のpythonスクリプトは戻り値を待って続け、無限の時間Interruptible sleep(S1)状態にとどまります!

とにかくpyhs2またはparamikoを使用してスクリプトを正常に動作させることができますか? osには、Pythonで利用可能な他のオプションがありますか?

+0

私は 'pyhs2'を知っていませんが、' paramiko'を使うと 'exec_command()'関数がすぐに返ってくるので、あなたが何を意味するのか理解できません。 – pynexj

+0

私はpyhs2とpyhiveライブラリで同様の問題に直面しています、任意の提案や回避策ですか? –

答えて

0

これまで述べたように、パフォーマンスベースの環境でも同様の問題が発生します。 私は、HIVE TEZ実行エンジンを使用してクエリを実行するためにPYHS2モジュールを使用していました。 TEZは多くのログを生成します(基本的に秒単位)。ログはSTDOUT変数に取り込まれ、クエリが正常に完了すると出力に提供されます。

for line in iter(lambda: stdout.readline(2048), ""): 
    print line 

をしかし、このために、あなたがPARAMIKOまたはファブリックを使用してクラスタ化するネイティブ接続を使用して、CLI経由でハイブコマンドを発行する必要があります。以下に示すように 克服する方法は、それが発生したときのように、出力をストリームすることですまたはビーライン。

関連する問題