2017-05-16 13 views
0

私は、複数のhqlファイルを呼び出すシェルで書かれたフレームワークを持っています。Hive -fは毎回新しいセッションを作成しています

ハイブをfile1.hql -f

ハイブ-f file2.hql

ハイブ-f file3.hql

各ハイブ-fコマンドを新しいセッションを作成し、実行するために多くの時間を取ってコマンド。多くの場合、これらのファイルの実際のクエリは迅速に実行されますが、大部分の時間は新しいセッション作成に使用されます。

デーヴハイブサポートセッションポーリング/またはhqlファイルで一度セッションを作成し、他のすべてのハイブ-fコールで再利用する他のメカニズム?

+1

良い方法:新しいクエリを1つのファイルに追加し、最後にすべてのクエリを1つのバッチで実行します。悪いやり方:あなたが今やっていること。醜い方法: 'hive'が作成されるとすぐに各クエリを実行するように、Linux **の名前付きパイプ**を使用してください。 http://www.linuxjournal.com/content/using-named-pipes-fifos-bash –

+0

質問を説明しながら、私はそれをとてもシンプルに保つようにしました。私の実際の事例では、hiveコマンドはフレームワーク内に1つずつ (シーケンシャル)存在しません。その間に他のロジックがあり、すべてのhqlコンテンツを1つのファイルに保存して実行することはできません。 – Jobs

答えて

0

私が知っているように、それは不可能です。あなたのhqlファイルを1つのバッチファイルにマージすることをお勧めします。 代替と推奨のアプローチとして、HiveServer2サービスに切り替えることを検討できます。 Pythonでhttps://github.com/cloudera/impylaを使用しています。

+0

なぜ_ _ Python ??? 'hive'(非推奨、ファットクライアント)の代わりに' beeline'コマンド(JDBCシンクライアント)を使用してください –

+0

私のところ、ビーラインはインタラクティブなワークフローのために輝いていますが、プログラマティックなアクセスのためには勧められませんでした。 – akirillov

関連する問題