1

私は仕事にハイブを使用しています。今日、いくつかの外部テーブルを作成したとき、キーワードを入力するのを忘れましEXTERNALた。HiveQLは次のようになります。

CREATE TABLE year_2012_main (
    some BIGINT,
    fields BIGINT,
    should BIGINT,
    beee BIGINT,
    here STRING,
    buttt STRING,
    Iveee STRING,
    decide STRING,
    tohide STRING,
    them BIGINT)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    COLLECTION ITEMS TERMINATED BY ' '
    MAP KEYS TERMINATED BY ':'
    STORED AS TEXTFILE location '/data/content/year_2012_main';

それから試してみselect count (*) from year_2012_main;ましたが、うまくいきました。

それで、好奇心から、違いは何EXTERNALですか?

4

1 に答える 1

0

外部ではないHiveテーブルは、管理対象テーブルと呼ばれます。Hiveの外部テーブルと管理テーブルの主な違いの1つは、外部テーブルが削除されたときに、それに関連付けられたデータ(この場合は/ data / content / year_2012_main)が削除されず、メタデータ(数値)のみが削除されることです。列の数、列のタイプ、ターミネータなど)がHiveメタストアから削除されます。管理対象テーブルが削除されると、メタデータとデータの両方が削除されます。これまでのところ、Hiveテーブルのスキーマが変更された場合、外部テーブルを削除して、新しいスキーマを使用して同じHDFSデータ上に別の外部テーブルを再作成できるため、テーブルを外部にすることを常に好みました。ただし、スキーマへの変更のほとんど(すべてではないにしても)は、ALTER TABLEまたは同様のコマンドであるため、管理対象のテーブルよりも外部テーブルを使用することをお勧め/優先することは、現在のテーブルよりもレガシーの懸念事項である可能性があります。

用語について詳しくは、こちらをご覧ください。

于 2012-07-14T16:10:50.840 に答える