0

インタラクティブ モードでエラスティック mapreduce で Hive を実行しました。

./elastic-mapreduce --create --hive-interactive

スクリプトモードでは:

./elastic-mapreduce --create --hive-script --arg s3://mybucket/myfile.q

自分のサーバーにアプリケーション (できれば PHP、R、または Python) を配置して、エラスティック mapreduce クラスターを起動し、解析可能な形式で出力を取得しながらいくつかの Hive コマンドを実行できるようにしたいと考えています。

クラスターのスピンアップには時間がかかることはわかっているので、アプリケーションは別のステップでそれを実行し、クラスターの準備が整うまで待つ必要があるかもしれません。しかし、このやや具体的な仮説の例のようなことをする方法はありますか?

  1. Hive テーブル customer_orders を作成します
  2. Hive クエリ「SELECT dt, count(*) FROM customer_orders GROUP BY dt」を実行します。
  3. 結果を待つ
  4. PHP で結果を解析する
  5. Hive クエリ「SELECT MAX(id) FROM customer_orders」を実行します。
  6. 結果を待つ
  7. PHPで結果を解析...

これをどのように行うかについての推奨事項はありますか?

4

1 に答える 1

1

MRJOBを使用できます。Python 2.5+ で MapReduce ジョブを記述し、複数のプラットフォームで実行できます。

代替手段はHiPy です。これは、おそらくすべてのニーズに十分対応できる素晴らしいプロジェクトです。HiPy の目的は、Python での Hive クエリのプログラムによる構築をサポートし、変換スクリプトを使用したクエリを含むクエリの管理を容易にすることです。

HiPy を使用すると、クエリの作成、変換スクリプト、および後処理を 1 つのスクリプトにまとめることができます。これにより、スクリプトの追跡可能性、文書化、および再利用性が向上します。すべてが 1 か所に表示され、Python コメントを使用してスクリプトを文書化できます。

Hive クエリは、列、テーブル、Select ステートメントなどを表す少数の Python オブジェクトを構成することによって構築されます。このプロセス中、HiPy は結果のクエリ出力のスキーマを追跡します。

変換スクリプトは、Python スクリプトの本体に含めることができます。HiPy は、スクリプトのコードを Hive に提供するだけでなく、Python データ型との間のデータのシリアライズとデシリアライズも処理します。いずれかのデータ列に JSON が含まれている場合、HiPy は Python データ型との間の変換も処理します。

詳しくはドキュメンテーションをチェック!

于 2012-12-21T12:04:31.843 に答える