1

ハイブ クエリの制御フローとは何ですか?

たとえば、Emp_Table と Dept_Table を結合したいとします。

流れは?

関連するすべての情報を取得するのは、メタ ストアのどのテーブルからですか?

1) Emp_Table に対応するファイルはどこにありますか? (HDFS の場所) 2) テーブル Emp_Table のフィールドの名前は何ですか? 3) Emp_Table のデータを含むファイルの区切り文字は何ですか? 4)データがバケット化またはパーティション化されている場合、どこから(メタストアテーブル名)とどのように(クエリ)HDFSフォルダーの場所を提供しますか?

4

2 に答える 2

6

フローは次のようになります。

ステップ 1 : Hive クライアントがクエリをトリガーします (CLI、または JDBC、ODBC、Thrift、または webUI を使用する外部クライアント)。

ステップ 2 : コンパイラがクエリを受け取り、メタストアに接続します。

ステップ 3: コンパイル フェーズの開始。

Parser

クエリをparse tree表現に変換します。ANTLRを使用して生成されabstract syntax tree(AST)ます。

Semantic analyzer

コンパイラは、入力テーブルと出力テーブルのメタストアによって提供される情報に基づいて論理プランを構築します。コンパイラもこの段階でチェックtype compatibilitiesして通知します。compile-time semantic errors

QBT creation 

このステップでは、AST から と呼ばれる中間表現への変換が行われquery block(QB) treeます。

Logical plan generator

このステップで、コンパイラはセマンティック アナライザーからの論理プランを操作の論理ツリーに書き込みます。

Optimization

DAG optimizationsこれは、一連の全体がこのフェーズで行われるため、コンパイル フェーズの最も重い部分です。次のタスクが含まれます。

Logical optimization

Column pruning

Predicate pushdown

Partition pruning

Join optimization

Grouping(and regrouping)

Repartitioning

Conversion of logical plan into physical plan by physical plan generator

Creation of final DAG workflow of MapReduce by physical plan generator

ステップ 4: 実行エンジンがコンパイラ出力を取得して、Hadoop プラットフォームで実行します。次のタスクが含まれます。

MapReduce タスクは、最初に計画のその部分を plan.xml ファイルにシリアル化します。

次に、plan.xml ファイルがタスクのジョブ キャッシュに追加され、Hadoop を使用して ExecMapper と ExecReducer のインスタンスが生成されます。

これらの各クラスは、plan.xml ファイルを逆シリアル化し、タスクの関連部分を実行します。

最終結果は一時的な場所に保存され、クエリ全体が完了すると、挿入またはパーティションの場合は結果がテーブルに移動されます。それ以外の場合は、一時的な場所で呼び出しプログラムに返されます。

注 : すべてのタスクは、依存関係の順序で実行されます。それぞれは、すべての前提条件が実行された場合にのみ実行されます。

metastore テーブルとそのフィールドについて知るには、 metastore の MR ダイアグラムを参照してください。

ここに画像の説明を入力

HTH

于 2013-06-13T19:49:20.110 に答える
0

基盤となる HDFS ディレクトリ パス、区切り文字、パーティション、およびその他の詳細を確認するには..

describe extended Emp_Table;
describe extended Dept_Table;

Hive 制御フローがクエリの前EXPLAINまたは前にどのように配置されるかを確認するには。EXPLAIN EXTENDED

于 2013-06-14T10:16:32.313 に答える