6

私は Hadoop を初めて使用し、Hive を学習しています。

Hadoop 決定版ガイド第 3 版では、ページ番号。428 最後の段落

HIVEの外部テーブルに関する以下の段落がわかりません。

「一般的なパターンは、外部テーブルを使用して HDFS に格納された初期データセット (別のプロセスによって作成された) にアクセスし、Hive 変換を使用してデータを管理された Hive テーブルに移動することです。」

上記のフレーズの意味を簡単に説明できる人はいますか?

4

4 に答える 4

4

管理対象テーブルのみでサポートされているACID またはその他の機能を有効にする場合を除き、テーブルを管理対象に移動する理由はありません。

管理/外部テーブルでサポートされる機能の相違点のリストは、将来変更される可能性があるため、現在のドキュメントを使用することをお勧めします。現在、これらの機能は次のとおりです。

  • ARCHIVE/UNARCHIVE/TRUNCATE/MERGE/CONCATENATE は、管理対象テーブルに対してのみ機能します
  • DROP は管理対象テーブルのデータを削除しますが、外部テーブルのメタデータのみを削除します
  • ACID/Transactional は、管理されたテーブルに対してのみ機能します
  • クエリ結果のキャッシュは、管理されたテーブルに対してのみ機能します
  • 外部テーブルでは RELY 制約のみが許可されます
  • 一部のマテリアライズド ビュー機能は、管理されたテーブルでのみ機能します

EXTERNAL テーブルと MANAGED テーブルの両方を同じ場所に作成できます。詳細とテストについては、この回答を参照してください: https://stackoverflow.com/a/54038932/2700344

データ構造は、外部/管理テーブル型と共通点はありません。構造を変更したい場合は、必ずしもテーブル管理/外部タイプを変更する必要はありません

于 2013-08-21T14:51:18.763 に答える
4

Hive の外部テーブルと管理対象テーブルの主な違いは、外部テーブルのデータが Hive によって管理されないことです。外部テーブルを作成するときに、そのテーブルの HDFS ディレクトリを定義すると、Hive は単純に「検索」してそこからデータを取得できますが、Hive はそのフォルダ内のデータを削除または変更できません。外部テーブルを削除すると、Hive はそのメタストアからメタデータのみを削除し、HDFS のデータは変更されません。

管理対象テーブルは、基本的に HDFS 内のディレクトリであり、Hive によって作成および管理されます。さらに、そのテーブルのパーティション/生データ/テーブルを削除/変更するためのすべての操作は、Hive で行う必要があります。そうしないと、Hive メタストアのメタデータが正しくなくなる可能性があります (たとえば、HDFS から手動でパーティションを削除しても、Hive メタストアにはパーティションが存在するという情報が含まれています)。

Hadoop 決定版ガイドでは、生データを生成し、それをフォルダーに保持する MR ジョブを作成するのが一般的であるということを著者が意味していたと思います。そのフォルダーを調べるHive外部テーブルを作成するよりも。また、テーブルなどを削除するリスクなしにクエリを安全に実行できます。つまり、一般的なデータを生成する MR ジョブを実行し、Hive 外部テーブルを管理対象テーブルに挿入するためのデータ ソースとして使用できます。退屈な同様の MR ジョブの作成を回避し、このタスクを Hive クエリに委任するのに役立ちます。外部テーブルからデータを取得し、必要に応じて集計/処理し、結果を管理テーブルに入れるクエリを作成します。

外部テーブルのもう 1 つの目的は、リモート サーバーからのソース データとして、たとえば csv 形式で使用することです。

于 2013-08-19T16:08:22.580 に答える
2

本にも記載されています。

テーブルが外部テーブルの場合。

 you can use other technologies like PIG,Cascading or Mapreduce to process it .

You can also use multiple schemas for that dataset.

You can also create data lazily if it is external table.

when you decide that dataset should be used by only Hive,make it hive managed table.
于 2013-08-19T13:34:53.820 に答える